gpt4 book ai didi

c - 在 C 中使用 free() 时出现问题

转载 作者:行者123 更新时间:2023-11-30 15:36:12 25 4
gpt4 key购买 nike

我在使用免费版时遇到问题。我想分配一个 *chars 的二维数组并释放它们,但它在运行时失败。我正在学习指针,可能会让这个变得复杂化。

  //NUMBEROFLINES, NUMBEROFDIE, and WIDTHOFDIE are some ints (3, 2, 3),
int iLineSize, iLine, iDie;
char **piDieString;

piDieString = (char**)malloc(NUMBEROFLINES * sizeof(*piDieString)); //Allocate number of lines
iLineSize = NUMBEROFDIE * WIDTHOFDIE * sizeof(char); //Size of line
for(iLine = 0; iLine < NUMBEROFLINES; iLine++)
{
piDieString[iLine] = (char*)malloc(iLineSize); //Allocate size of lines
}

//Stuff happens

/*Freeing*/
for(iLine = 0; iLine < NUMBEROFLINES; iLine++)
{
free(piDieString[iLine]);
}
free(piDieString);

最佳答案

我相信//Stuff comes有问题。

添加了打印以验证内存是否正确分配和释放,如下所示:

#include <stdio.h>
#define NUMBEROFLINES 3
#define NUMBEROFDIE 2
#define WIDTHOFDIE 3
int main(void) {

int iLineSize, iLine, iDie;
char **piDieString;

piDieString = (char**)malloc(NUMBEROFLINES * sizeof(*piDieString)); //Allocate number of lines
printf("Allocated piDieString: 0x%x\n",piDieString );
iLineSize = NUMBEROFDIE * WIDTHOFDIE * sizeof(char); //Size of line

for(iLine = 0; iLine < NUMBEROFLINES; iLine++)
{
piDieString[iLine] = (char*)malloc(iLineSize); //Allocate size of lines
printf("Allocating piDieString[%d]: 0x%x\n",iLine,piDieString[iLine] );
}

//Stuff happens

/*Freeing*/
for(iLine = 0; iLine < NUMBEROFLINES; iLine++)
{
printf("Freeing piDieString[%d]: 0x%x\n",iLine,piDieString[iLine] );
free(piDieString[iLine]);
}

printf("\nFreeing piDieString: 0x%x\n",piDieString );
free(piDieString);
return 0;
}

输出是这样的,看起来不错。

Allocated piDieString: 0x966e008
Allocating piDieString[0]: 0x966e018
Allocating piDieString[1]: 0x966e028
Allocating piDieString[2]: 0x966e038
Freeing piDieString[0]: 0x966e018
Freeing piDieString[1]: 0x966e028
Freeing piDieString[2]: 0x966e038

Freeing piDieString: 0x966e008

详细说明“但它在运行时失败”...您是否看到崩溃?如果是,请检查 //Stuffgenesis 是否存在无效的内存访问...

关于c - 在 C 中使用 free() 时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22625541/

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