【发布时间】:2015-02-01 04:07:39
【问题描述】:
我正在为 2D 数组分配内存,我认为我做得很好,但是当我在内存中时,它似乎 和我写的不一样。
int size = 4;
table = (int**)malloc(size*sizeof(int*));
int i;
for (i = 0; i < size; i++)
{
table[i] = (int*)malloc(size*sizeof(int));
}
但是当我查看调试器时,在我添加了一个 4X4 2D 数组的所有元素之后。 好像我有超过 4 列。我只是以常规方式添加 int
table[i][j] = num;
任何帮助将不胜感激!
谢谢!
编辑:添加 int 的代码
int lineCounter = 0;
char line[200];
while (fgets(line, 200, fr) != NULL)
{
i = 0;
char* split;
int num;
split = strtok(line, " ");
sscanf(split, "%d", &num);
table[lineCounter][i] = num;
i++;
for (i ; i < size; i++)
{
int num;
split = strtok(NULL, " ");
sscanf(split, "%d", &num);
table[lineCounter][i] = num;
}
lineCounter++;
}
【问题讨论】:
-
假设您拥有
int **table,这看起来不错。您的意思是在向这个二维数组输入值时,即使在输入 4*4 之后,您也会看到更多的输入被询问? -
我有 int** 表。是的,我看到了更多的输入。令人困惑
-
你能展示一下你是如何向这个数组输入值的代码吗?
-
“看起来你有超过 4 列”到底是怎么回事?
-
在这个二维数组的例子中,你可能会看到指向第二维的元素,记住当你以这种方式分配一个数组时,每个table[n]实际上都是一个指针,并且不会包含您的实际数据元素之一。
标签: c memory-management multidimensional-array