http://www.csdn.net/ http://www.arm.com/zh/ https://www.kernel.org/ http://www.linuxpk.com/ http://www.51develop.net/ http://linux.chinaitlab.com/ http://www.embeddedlinux.org.cn http://bbs.pediy.com/
分类: C/C++
2014-05-14 10:08:41
点击(此处)折叠或打开
andyhzw2014-05-15 15:21:19
dididimeme01:网上查了一下,给出的答案是, “注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。",但是这样就带来另一个问题,当返回地址与输入地址相同时,有被free两次的风险,如果释放还需要判别是否地址相同。
只需释放一次。
ptr = malloc;
;;;
ptr = realloc;
...
free(ptr);
andyhzw2014-05-15 15:17:51
dididimeme01:有个疑问关于realloc,即如果分配成功而返回的指针与输入指针的地址不同(分配成功),那原先输入的地址是否还有效?
无效,数据会被复制到新的内存中。
回复 | 举报dididimeme012014-05-15 14:55:39
网上查了一下,给出的答案是, “注意:这里原始内存中的数据还是保持不变的。当内存不再使用时,应使用free()函数将内存块释放。",但是这样就带来另一个问题,当返回地址与输入地址相同时,有被free两次的风险,如果释放还需要判别是否地址相同。