使用calloc后C访问冲突

时间:2011-01-31 18:52:28

标签: c memory-management malloc calloc

注意:C是Microsoft C Compiler。

我遇到以下代码时出现问题。

*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数组,但我认为这是完全相同的问题,这只是最简单的情况。

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

2 个答案:

答案 0 :(得分:5)

*Roomsize[roomIndex]*(Roomsize[roomIndex])相同。你想说(*Roomsize)[roomIndex]

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

答案 1 :(得分:0)

当您分配Roomsize时,您的第一行看起来不对。如果我认为Roomsize是int *是正确的,你应该说Roomsize = (int *) calloc...正如@Daniel发布的那样,你的作业也应该被改变以摆脱星号。