我已经分配了足够的内存 space,但是在写入大约 69 个字符后我遇到了访问冲突

I have allocated enough memory space, but after writing about 69 characters I get access violation

我在调用控制台应用程序中有以下代码。代码是用C语言写的

char list[500000];
int ret=0;
ret = GetFeatures(".", list);

在方法 GetFeatures(char *PATH, char featureList[500000]) 的 dll 实现中。

在下面的代码段中,方法在写入大约 69 个字符后抛出错误(访问冲突)。有谁知道为什么?

while (pos=0)
{   
    strcat(featureList, getFeatureName());
    strcat(featureList, "|");
    strcat(featureList, getVersion);
    strcat(featureList, "|");
    strcat(featureList, getVS());
    strcat(featureList, ";");

    pos = isEnd();
}

[评论更新:]

pos=0 打错了。

几件事:

首先,你还没有初始化list中的内存。它可以包含任何东西,所以任何将它与 strcat 一起使用的尝试都是危险的,并且可能会意外崩溃。

声明数组时,改为这样做:

char list[500000] = "";

其次,您的 while 循环应该是:

while (pos==0)

否则您会将其重置为 0。因此 while 循环中的代码永远不会计算。