2

このような構造へのメモリの割り当てを見てきました

   ///enter code here
   for(i = 0; i<10; i++)
     s->a[i].mem = malloc(sizeof(*a[0]));

これはどういう意味ですか???それは a または mem にメモリを割り当てています。私は混乱しています。

ポインタmemに割り当てている場合?? 私はコードで見ました、彼らは

mem[0] = bla...bla...
mem[1] = bla...bla...

合法か???

4

4 に答える 4

1

これにより、サイズのメモリが割り当てられ*a[0]、このメモリ ブロックの先頭へのポインタがポインタに保存されmemます。

于 2013-07-23T10:44:06.560 に答える
0

a[0] が指すものと同じサイズのメモリブロックを割り当てることを意味します

このメモリ割り当ては、s->a[i].mem によってポイントされます。

したがって、プログラムの他の場所で a[0] が設定され、このフラグメントが a[0] の内容を使用して a[] の他のメンバーのサイズを見つけると思います

于 2013-07-23T10:45:51.030 に答える
0

a[0]コードは、指すオブジェクトと同じサイズのブロックを割り当てます。次に、そのブロックへのポインタを に格納しますs->a[i].mem

于 2013-07-23T10:43:55.950 に答える