gpt4 book ai didi

c - 访问冲突写入位置插入数组

转载 作者:太空宇宙 更新时间:2023-11-04 07:37:07 25 4
gpt4 key购买 nike

我从调试器中收到访问冲突错误,但我真的不知道为什么。我怀疑这将是非常愚蠢的事情。我有一组目录条目:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com