C++程序错误问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 22:16:42
char *n;
n=new char[m+7];
for(i=0;i<m;i++){
s=pow(2,i);
n[s]=NULL;
}
for(i=0;i<m+7;i++)
if(n[i]==NULL)
{}
else
{
n[i]=p[r];
r++;
}
这是一段程序中的一段,整个程序都没有错误,但是一运行到这里,程序就说
"0x004017"指令引用的"0xcd04e9e4"内存,该内存不能为“read"为啥?

栈溢出了。数组访问超出界限。n=new char[m+7],最后一位是'0',标志字符串的结束位,而 for(i=0;i<m+7;i++)这段代码访问了最后一位,因此会出错。改成m+6就好了

能给下完整程序么?

整个程序贴出来

当m大于3时,定义的数组溢出,n[s]是char, NULL是0指针,这样赋值编译时没有错,可是逻辑上不对。

你分配内存空间后没有初始化呢。

你把整个程序贴出来我帮你看看吧。。。