Форум программистов, компьютерный форум, киберфорум
Наши страницы
С++ для начинающих
Войти
Регистрация
Восстановить пароль
 
fobos362
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4
#1

Ошибка освобождения памяти new/delete - C++

15.12.2013, 22:31. Просмотров 378. Ответов 6
Метки нет (Все метки)

При выполнении оператора delete[]rez вылетает ошибка BLOCK_TYPE_IS_VALID(pHead->nBlockUse)

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
#include <iostream>
using namespace std;
 
class Soed {
public:
    char str1[40],str2[10];
    char* SS (char *str1,char *str2){strcat(str1,str2); return str1;}
    Soed(){}
    ~Soed(){}
};
int main(){
Soed first;
 
gets(first.str1);
gets(first.str2);
 
char* rez=new char[50]; 
rez=first.SS(first.str1,first.str2);
puts(rez);
 
 
delete[] rez;
 
return 0;
}
Пробовал другой вариант:
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
#include <iostream>
using namespace std;
 
class Soed {
    char str1[40],str2[10],*str3;
public:
    void set_str1(){gets(str1);}
    void set_str2(){gets(str2);}
    char get_str1(){return str1[40];}
    char get_str2(){return str2[10];}
    char*get_str3(){return str3;}
    void disp_str3(){puts(str3);}
    void cat(){ str3=strcat(str1,str2); }
    Soed(){str3=new char[40];}
    ~Soed(){delete[40]str3;}
};
int main(){
Soed first;
first.set_str1();
first.set_str2();
first.cat();
first.disp_str3();
return 0;
}
Тоже самое. Подскажите пожалуйста, буду крайне благодарен, а то целый день сижу уже гуглю.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.12.2013, 22:31
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Ошибка освобождения памяти new/delete (C++):

Проверка освобождения памяти (new, delete)
Всем привет. Программы помаленьку становятся сложнее. Появляются самодельные...

Ошибка при освобождении памяти (delete)
Здравствуйте! Есть массив lines, созданный вот так : int *line = new int ; ...

Ошибка с delete при удалении памяти из-под строки
strngbad.h // strngbad.h -- flawed string class definition #include...

Деструкторы, аналоги освобождения памяти
Доброго времени суток. Возник следующий вопрос. Какие, помимо деструкторов,...

Указатель после освобождения памяти
Стивен Прата, глава 4, раздел &quot;Освобождение памяти с помощью операции delete&quot; ...

Не понимаю логики освобождения памяти
Не могу понять каким образом освобождается память если ее ячейки всеравно...

6
Croessmah
++Ͻ
14161 / 8086 / 1513
Регистрация: 27.09.2012
Сообщений: 19,929
Записей в блоге: 3
Завершенные тесты: 1
15.12.2013, 22:34 #2
Кто будет инициализировать значения в массивах?
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 22:35 #3
Если (в первом варианте) вот это закоментировать, то ошибка исчезает?
C++
1
2
rez=first.SS(first.str1,first.str2);
puts(rez);
1
fobos362
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4
15.12.2013, 22:40  [ТС] #4
Если (в первом варианте) вот это закоментировать, то ошибка исчезает?
Код C++
1
2
rez=first.SS(first.str1,first.str2);
puts(rez);
Исчезает) Почему??
0
alsav22
5438 / 4833 / 831
Регистрация: 04.06.2011
Сообщений: 13,587
15.12.2013, 22:40 #5
После этого:
C++
1
rez=first.SS(first.str1,first.str2);
rez на массив на стеке указывает (str1).
1
fobos362
0 / 0 / 0
Регистрация: 15.12.2013
Сообщений: 4
15.12.2013, 22:43  [ТС] #6
Цитата Сообщение от alsav22 Посмотреть сообщение
После этого:
C++
1
rez=first.SS(first.str1,first.str2);
rez на массив на стеке указывает (str1).
А как это вылечить??) Я вообще когда инициализирую этот указатель, даже так rez="ertert"; то всё равно ошибку выдаёт!
0
alsav22
15.12.2013, 22:47     Ошибка освобождения памяти new/delete
  #7

Не по теме:

Цитата Сообщение от fobos362 Посмотреть сообщение
А как это вылечить??
Сесть и подумать... О классе Soed, о себе...

1
15.12.2013, 22:47
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.12.2013, 22:47
Привет! Вот еще темы с ответами:

Стратегия выделения/освобождения памяти
здравствуйте господа. есть такой вопрос. пусть есть класс например Bitmap -...

Нюансы выделения и освобождения памяти (структуры)
struct point { int a; point *next; } point *p=new point Я освобожу всю...

Переполнение стека во время освобождения памяти
Здравствуйте! СТолкнулся с такой проблемой, что при работе деструктора...

Функциии динамического выделения и освобождения памяти
Необходим написать функции выделения и освобождения памяти под двумерный...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru