gpt4 book ai didi

c - 内存分配。二维数组(空函数)

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

我遵循了这个论坛上的几个例子,但似乎我的程序在某些时候仍然会崩溃。

我只想使用void 函数 进行内存分配。

void alloc(int ***matrix, int n)
{
int i = 0;
for( ; i < n; i++)
{
(*matrix)[i] = (int*)malloc(n * sizeof(int));
}

i = 0;
for( ; i < n; i++)
{
int j = 0;
for( ; j < n; j++)
{
(*matrix)[i][j] = i * j;
}
}
}

//-------------------------------------------------------------------
int main()
{
int n;
int **matrix_pp;

printf("Enter n: ");
scanf("%d", &n);

alloc(&matrix_pp, n);

free(matrix_pp);
return 0;
}

最佳答案

您尝试在 (*matrix)[i] 被分配之前使用它。添加:

 (*matrix) = malloc(n * sizeof(**matrix));

在你的 for 循环之前。

这里要注意两点:

1) 不要转换malloc的结果,

2) 使用sizeof(*pointer) 而不是显式写出类型;这样,如果您以后决定更改类型,它仍然有效。

此外,您还需要释放循环中的所有分配;否则,你有内存泄漏。

关于c - 内存分配。二维数组(空函数),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33354606/

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