我从调试器得到访问冲突错误,但我真的不知道为什么。我怀疑这会是一件非常愚蠢的事情。
我有一个目录项数组:

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

最佳答案

*bufferPosition++并不像你想象的那样。它取消引用bufferPosition,然后递增指针,而不是指向的值。您可能需要(*bufferPosition)++,这会增加指向值。
请注意,不清楚为什么要按地址传递bufferPositionbufferSize,因为它们对调用方没有用处,因为ListDirectory释放了变量引用的数据。

关于c - 插入数组的访问冲突写入位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7897042/

10-11 18:55