这段代码中释放内存的正确方法是什么?
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main( void ){
char *string1, *string2;
string1 = (char*) malloc(16);
strcpy(string1, "0123456789AB");
string2 = realloc(string1, 8);
printf("string1 Valor: %p [%s]\n", string1, string1);
printf("string2 Valor: %p [%s]\n", string2, string2);
free(string1);
free(string2);
return 0;
}
由于两个指针指向同一个方向
我认为您的困惑来自(没有灵感的)表达“自由指针”(您在帖子中使用过,但此后将其编辑掉)。你不要释放指针. You 空闲内存。指针只是telling哪个记忆。
在您的示例中,您有:从以下位置获得的内存malloc
. string1
指向这段记忆。然后当你打电话时realloc
获得一个新的内存块(可能从同一地址开始,也可能不是),但是realloc
如果需要,请注意释放旧的(因此自行访问或释放它是未定义的行为)。string2
指向这个新的内存块。
所以你必须free
只是从获得的内存块realloc
. string2
指向那段记忆。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)