C の超カンタンなことなら漏れに聞け
レス数が950を超えています。1000を超えると書き込みができなくなります。
0968964=910
NGNGたびたびお騒がせしております
本日もたりない頭を絞ってみました
>*cp = i;
4byte分(int i)の値を、1byte分(char cp)確保されている
場所へコピーしようとするが、賢いコンパイラが
余った3byte分を破棄してくれて、
意図しない結果になるがメモリ破壊は起こらない。
>memcpy( cp, &i, sizeof(int) );
変数iの値が確保されているアドレス(&i)を先頭として、
4byte分(=sizeof(int))の内容をを変数cpが指し示す
アドレスから4byte分の領域へ無理矢理コピーする。
が、cpはchar型なので本当は1byte分しか
メモリ領域が確保されていない為メモリ破壊が起こる。
ここまでは、よかでしょうか?
で、キャストというのはmemcpyと同じように無理矢理
内容をコピーしてしまうために >>962 さんがおっしゃる状況になる。
こんな理解でよろしいでしょうか?
レス数が950を超えています。1000を超えると書き込みができなくなります。