我已经分配了足够的内存 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
循环中的代码永远不会计算。
我在调用控制台应用程序中有以下代码。代码是用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
循环中的代码永远不会计算。