C ++代码工作在32位,但64位失败,堆损坏

时间:2011-06-17 18:23:16

标签: visual-c++

我是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;

}

}

请注意,这不是我的代码,只是我继承并需要修复的内容。

感谢任何帮助。

谢谢,

1 个答案:

答案 0 :(得分:0)

代码 b-a + 1 = 2

所以..

x = a 表示 x = 3

所以... x&lt; = b 表示&lt; = 4 ,但数组大小 2 。这是一个运行时错误

还有变量x的声明吗?

如果c([x a]){...} 是正确的语法吗? 也许你想说 if(c [x-a]){...}