gpt4 book ai didi

c - 无法正确释放另一个 malloc 的 malloc

转载 作者:太空宇宙 更新时间:2023-11-04 05:54:46 28 4
gpt4 key购买 nike

<分区>

这是有问题的片段。

int main()
{
char** RESERV = (char**)malloc(sizeof(char*)*4);
printf("%i, %i, %i, %i, %i", **RESERV, *RESERV, RESERV, &**RESERV, sizeof(char*));
int i;
for(i = 0; i < 4; i++)
{
RESERV[i] = (char*)calloc(sizeof(char),16);
RESERV[i][15] = '\0';
}
for(i = 0; i < 4; i++)
RESERV[i]="Iambananananananananananana";
for(i = 0; i < 4; i++)
printf("\r\n>%i<", RESERV[i]);
for(i = 0; i < 4; i++)
{
printf("\r\n<%i>", (RESERV[i]));
free(RESERV[i]);
}
free(RESERV);
}

此代码 free() 在 32 位模式下运行良好,但在 64 位模式下会以某种方式严重崩溃。

在我的主程序中,我省略了释放 char** 的成员时不时导致意外行为,这显然是我不希望的。

我尝试过地址和指针,甚至尝试过

free(RESERV+(i*sizeof(char*))

也失败了。有人可以澄清我做错了什么吗?

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com