首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于realloc的有关问题

2012-02-20 
关于realloc的问题下面的两个代码有什么不同呢?result_num++result(RESULT*)realloc(result,sizeof(RESUL

关于realloc的问题
下面的两个代码有什么不同呢?
result_num++
result=(RESULT*)realloc(result,sizeof(RESULT)*result_num);

result=(RESULT*)realloc(result,sizeof(RESULT)+sizeof(result));

其中RESULT是我定义的一个结构体,result它的一个指针变量,result_num告诉我们现在一共有多少个该结构元素了.我是想让该指针变量在原来的基础上动态增长(有很多结果,最后构成一个数组),可是后者老是有那个after   normal   block的错误,改成前者就没有了,正常了.这是为啥哦?

[解决办法]
sizeof(result)是指针本身的尺寸,又不是结构体的尺寸,后者错误(注意大小写敏感):
sizeof(RESULT)+sizeof(result)

调整后的尺寸应该是sizeof(RESULT)*result_num,所以前者正确,后者有点不知所谓。
[解决办法]
realloc的作用是为指针分配空间用的,sizeof(RESULT)是结构体的大小,乘上该结构体对象的数量,就是指针所指空间的大小,所以第一个正确。
sizeof(result)是指针的大小,而在相同环境下,指针大小是一定的,你用一个结构体的空间加上一个指针的空间,显然不能正确表示你究竟要为指针分配多大空间

热点排行