gpt4 book ai didi

arrays - 构建成功,但堆已损坏。使用二维数组

转载 作者:行者123 更新时间:2023-12-02 08:44:48 24 4
gpt4 key购买 nike

我已经创建了一个二维数组,但失败了,我得到“lab10.exe 中 0x77a415de 处的未处理异常:0xC0000374:堆已损坏。”不知道从这里去哪里或如何调试。我相信这与我的数组大小或使用 malloc() 有关。非常感谢您的提前帮助!

//Get the number of Columns from the user
printf("Enter the number of rows and columns:\n");
scanf("%d", &dimension);

//Allocate 1-D Array of Pointers, Array 'a'
a = (int** ) malloc( sizeof(int)*dimension);
if(a == NULL)
{
printf("\nError Allocating Memory");
exit(1);
}

//Allocate Rows for 2-D Array; Array 'a'
for(r = 0; r < dimension; r++)
{
a[r] = (int*) malloc( sizeof(int) * dimension);
if (a[r] == NULL)
{
for(i = 0; i< r; i++)
free(a[i]);
printf("\nError Allocating Memory");
exit(1);
}
}

还有更多,但我从同一个整数“维度”做了 4 次不同的操作。谢谢!

最佳答案

这一行是错误的:

a = (int** ) malloc( sizeof(int)*dimension);

您为 int 类型的 dimension 元素数组分配了足够的空间,但随后您将其用作 int*< 的数组。如果您正在编译 64 位程序,则 sizeof(int*) 为 8 而 sizeof(int) 为 4,因此您没有分配足够的空间。您需要使用 sizeof(int*):

a = (int** ) malloc( sizeof(int*)*dimension);
// ^^^^^

关于arrays - 构建成功,但堆已损坏。使用二维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13296862/

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