1

注意:C 是 Microsoft C 编译器。

我在使用以下代码时遇到问题。

*Roomsize = (int*)calloc(sizeof(int),sched->numberOfRooms);

roomIndex = 0;
for(roomIndex=0; roomIndex< sched->numberOfRooms; roomIndex++)
{
    fscanf(inputFile,"%d",&lineInput);
    numberOfLinesRead++;
    *Roomsize[roomIndex] = lineInput;
}

这是在一个单独的 C 文件中。在我决定将事物分开以使它们更易于维护之前,我没有遇到这个问题,我想我只是有点混淆了指针。

calloc 工作正常。

在循环的第一次迭代中,roomIndex 的元素零被正确设置。

然而,循环中的第二个元素(元素 1)总是在运行时导致访问冲突。

我稍后在我的代码中也使用 2d 数组遇到了这个问题,但我认为这是完全相同的问题,这只是最简单的情况。

谁能帮我理解为什么除了第一个元素之外似乎不可能设置任何东西?

4

2 回答 2

5

*Roomsize[roomIndex]是一样的*(Roomsize[roomIndex])。你想说(*Roomsize)[roomIndex]

(我假设这Roomsize实际上是一个int**. 如果这不正确,那么问题可能出在其他地方。)

于 2011-01-31T18:55:11.827 回答
0

当您 allocate 时Roomsize,您的第一行看起来是错误的。如果我假设 Roomsize 是正确的int *,你应该说Roomsize = (int *) calloc...正如@Daniel 发布的那样,你的分配也应该改变以去掉星号。

于 2011-01-31T18:58:04.863 回答