【发布时间】:2017-11-02 16:04:22
【问题描述】:
我的目标是在 C 中为二维 int 数组动态重新分配内存。我知道关于该主题已经有几个问题,但不幸的是我的代码运行不正常,我不知道出了什么问题。
首先我分配内存:
int n = 10;
int m = 4;
int** twoDimArray;
twoDimArray = (int**)malloc(n * sizeof(int*));
for(int i = 0; i < n; i++) {
twoDimArray[i] = (int*)malloc(m * sizeof(int));
}
并用整数初始化数组:
for(int i = 0; i < n; i++) {
for(j = 0; j < 4; j++) {
twoDimArray[i][j] = i * j;
}
}
然后我使用realloc()动态重新分配内存:
int plus = 10;
int newArraySize = n + plus;
twoDimArray = (int**)realloc(twoDimArray, newArraySize * sizeof(int));
我希望我的 aray twoDimArray 现在可以在 [10][0] 访问,但是在运行时
printf("twoDimArray[10][0] = %d\n", twoDimArray[10][0]);
我收到“EXC_BAD_ACCESS”运行时错误。
可能我错过了一些相当简单的东西,但由于我是 C 新手,无法弄清楚我的错误。任何帮助表示赞赏。
【问题讨论】:
-
你需要将数组从n分配到n+plus,它们是未定义的指针。
-
EXC_BAD_ACCESS 听起来像是运行时错误,而不是编译器错误。
-
是的,对不起,我正在解决这个问题。谢谢指出!
-
这里没有二维数组。