malloc函数将所有数据分配给相同的内存地址

时间:2014-10-28 01:20:05

标签: c malloc dynamic-memory-allocation

现在,当我在块数组中打印每个元素时,每个元素都具有相同的地址。例如:

ints:   20 bytes stored at 0xbffa84fc 
doubles:   80 bytes stored at 0xbffa84fc 
chars:   8 bytes stored at 0xbffa84fc 
Students:   1008 bytes stored at 0xbffa84fc

2 个答案:

答案 0 :(得分:6)

blk->addr = &blk;

分配的内存的地址实际上是blk本身。但在这里,您使用的是&blk,即blk的地址。

答案 1 :(得分:0)

malloc返回一个void指针。

这里它返回一个指向' blk'的无效指针,但是将其类型化为数据类型' BlockType'。所以,' BLK'已经保留了已分配内存的地址,但语句“> blk-> addr =& blk'指向' blk'的地址这显然是一样的。