Форум программистов, компьютерный форум CyberForum.ru

HEAP CORRUPTION DETECTED - не понятно почему - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Unling
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 8
10.07.2012, 13:03     HEAP CORRUPTION DETECTED - не понятно почему #1
Помогите пожалуйста.
Есть такой код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
double e;
    char* w;               /////// POINT 1
    string q;
    size_t pos;
    string txtfile;
    Par.push_back(timuk);
    
    char charfile[40];
    itoa(n, charfile, 10);
    ifstream in( WORK_PATH + charfile + ".txt");
    getline(in, txtfile);
    
    
    getline(in, txtfile);
    pos = txtfile.find("=");
    q = txtfile.substr(pos+1);
   
     w = new char[q.length()];    ////// POINT 2
  
     strcpy(w, q.c_str());
  
    e = atof(w);
 
    Par[n]->Yaw=e;
 
    ////
    getline(in, txtfile);
    pos = txtfile.find("=");
    q = txtfile.substr(pos+1);
    
    delete w;                   ////////  POINT 3
    w = new char[q.length()];
    strcpy(w, q.c_str());
    e = atof(w);
    Par[n]->Roll=e;

Он парсит текстовый файл и достаёт оттуда параметры.
В точке 1 - объявляю указатель. В точке 2 - создаю сам объект. В точке 3, при попытке удалить объект - ошибка: HEAP CORRUPTION DETECTED
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.07.2012, 13:03     HEAP CORRUPTION DETECTED - не понятно почему
Посмотрите здесь:

Heap corruption detected C++
HEAP CORRUPTION DETECTED C++
C++ heap corruption detected
C++ Heap corruption detected
C++ Heap Corruption detected (
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
defer
秘密
 Аватар для defer
555 / 235 / 3
Регистрация: 29.11.2010
Сообщений: 783
10.07.2012, 13:29     HEAP CORRUPTION DETECTED - не понятно почему #2
попробуйте delete[]
cppGhost
32 / 30 / 1
Регистрация: 21.06.2012
Сообщений: 91
10.07.2012, 13:34     HEAP CORRUPTION DETECTED - не понятно почему #3
во-первых, да
C++
1
delete [] w;
а во-вторых, попробуй
C++
1
w = new char[q.length()+1];
gray_fox
What a waste!
 Аватар для gray_fox
1244 / 1127 / 53
Регистрация: 21.04.2012
Сообщений: 2,350
Завершенные тесты: 3
10.07.2012, 13:34     HEAP CORRUPTION DETECTED - не понятно почему #4
Цитата Сообщение от Unling Посмотреть сообщение
C++
1
2
w = new char[q.length()]; ////// POINT 2
strcpy(w, q.c_str());
Под последний символ ('\0') память не выделена.
Unling
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 8
10.07.2012, 13:39  [ТС]     HEAP CORRUPTION DETECTED - не понятно почему #5
На одни и те же грабли опять с этим "+1" ((
Заработало)) Спасибо всем.
Yandex
Объявления
10.07.2012, 13:39     HEAP CORRUPTION DETECTED - не понятно почему
Ответ Создать тему
Опции темы

Текущее время: 13:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru