Код C ++ работает в 32-разрядной версии, но не работает в 64-разрядной версии с повреждением кучи - PullRequest
0 голосов
/ 17 июня 2011

Я новичок в 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 голосов
/ 17 декабря 2011

в вашем коде b-a + 1 = 2

так ..

x = a это означает x = 3

так что ... x <= b </strong> означает время, пока <= 4 </strong>, но размер массива равен 2 . это ошибка выполнения

а также есть ли объявление переменной x?

если c ([x a]) {...} это правильный синтаксис? может ты хочешь сказать if (c [x-a]) {...}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...