我是C ++的新手,需要帮助解决64位的堆损坏问题。下面是32位但不是64位的代码。
#define a 3
#define b 4
char *c[b-a+1];
//some allocation code to char *c[b-a+1]
//destructor code that fails
for (x = a; x <= b; x++) {
if c([x-a]){
char * y =(char*)c[x-a];
free(y);
c[x-a]=null;
}
}
请注意,这不是我的代码,只是我继承并需要修复的内容。
感谢任何帮助。
谢谢,
答案 0 :(得分:0)
代码 b-a + 1 = 2
所以..
x = a 表示 x = 3
所以... x&lt; = b 表示&lt; = 4 ,但数组大小 2 。这是一个运行时错误
还有变量x的声明吗?
如果c([x a]){...} 是正确的语法吗? 也许你想说 if(c [x-a]){...}