Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/11: Рейтинг темы: голосов - 11, средняя оценка - 4.82
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 8
1

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

10.07.2012, 13:03. Показов 2120. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите пожалуйста.
Есть такой код:

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
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.07.2012, 13:03
Ответы с готовыми решениями:

Почему вылетает ошибка Heap corruption detected
Добрый вечер. Ошибка вылетает на строке 870 в файле Lexical_unit.cpp, когда происходит попытка...

heap corruption detected
имеется класс CStr - строка, в нём есть конструктор CStr CStr::CStr(char *s) { length = 0;...

Heap corruption detected
Возникает эта ошибка при выполнении функции Strings::Append (строка 81, в меню это пункт 3)....

HEAP CORRUPTION DETECTED
Доброго времени суток, господа. Только начал изучать ООП и столкнулся с проблемой. Нужно...

4
577 / 256 / 18
Регистрация: 29.11.2010
Сообщений: 868
10.07.2012, 13:29 2
попробуйте delete[]
1
32 / 30 / 6
Регистрация: 21.06.2012
Сообщений: 91
10.07.2012, 13:34 3
во-первых, да
C++
1
delete [] w;
а во-вторых, попробуй
C++
1
w = new char[q.length()+1];
1
What a waste!
1610 / 1302 / 180
Регистрация: 21.04.2012
Сообщений: 2,733
10.07.2012, 13:34 4
Цитата Сообщение от Unling Посмотреть сообщение
C++
1
2
w = new char[q.length()]; ////// POINT 2
strcpy(w, q.c_str());
Под последний символ ('\0') память не выделена.
1
0 / 0 / 0
Регистрация: 22.10.2011
Сообщений: 8
10.07.2012, 13:39  [ТС] 5
На одни и те же грабли опять с этим "+1" ((
Заработало)) Спасибо всем.
0
10.07.2012, 13:39
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.07.2012, 13:39
Помогаю со студенческими работами здесь

Heap Corruption detected (
что не правильно? запускаю и ошибка вылетает как на предидущей картинке template<typename TT>...

Heap corruption detected
При попытке очистить память выдает "Heap corruption detected". Помогите пожалуйста( //...

HEAP CORRUPTION DETECTED
Не могу понять, почему выдает такую ошибку, когда я освобождаю память: "HEAP CORRUPTION DETECTED:...

Heap Corruption Detected
Выдает ошибку HEAP CORRUPTION DETECTED, судя по всему где то ошиблась с распределением памяти...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru