访问冲突写入位置插入阵列

时间:2011-10-25 23:28:30

标签: c winapi

我从调试器获得了Access违规错误,但我真的不知道为什么。我怀疑这将是非常愚蠢的事情。 我有一系列目录条目:

typedef struct dirEntry{
    TCHAR fileName[MAX_PATH];
    DWORD fileSizeLow;
    DWORD fileSizeHigh;
} dirEntry;

DWORD bufferSize = MEM_SIZE; //MEM_SIZE = 100
DWORD bufferPosition = 0;
dirEntry* dirBuffer;

dirBuffer = (dirEntry*) malloc(bufferSize*sizeof(dirEntry));

然后我将它传递给函数ListDirectory(_T("D:\\books\\*"), dirBuffer, &bufferSize, &bufferPosition)

在函数内部,我检索有关内部文件的信息,但是当我调用它时:

dirBuffer[*bufferPosition].fileSizeLow = dataFound.nFileSizeLow;
_tcscpy(dirBuffer[*bufferPosition].fileName, dataFound.cFileName);
*bufferPosition++;

第一行产生异常。有人可以告诉我我做错了吗?

编辑ListDirectory代码:http://pastebin.com/ScbcqX7p

1 个答案:

答案 0 :(得分:3)

*bufferPosition++没有按照您的想法行事。它解引用bufferPosition,然后递增指针,而不是指向的值。你可能想要(*bufferPosition)++,它会增加指向值。

请注意,不清楚为什么要通过地址传递bufferPositionbufferSize,因为它们对调用者没用,因为ListDirectory释放了变量引用的数据。 / p>