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

C++

Войти
Регистрация
Восстановить пароль
 
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
#1

Ошибка при delete - C++

25.02.2015, 18:58. Просмотров 704. Ответов 9
Метки нет (Все метки)

Здравствуйте, вылетает такая ошибка, почему? Указатель верный, до этого места все нормально работает
Миниатюры
Ошибка при delete  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2015, 18:58     Ошибка при delete
Посмотрите здесь:

Ошибка при использовании delete - C++
И снова здравствуйте! Пишу раз третий.Я уже готов убицца ап сцену изза этого delete.Я не понимаю что не так делаю: class CMenu { ...

Ошибка при использовании new[] / delete[] - C++
Здравствуйте. Пишу учебную программу, моделирующую движение лифта (если кто учебник Дейтелов читал, тот поймет :) ). Для начала приведу...

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

Ошибка при удалении массива с помощью delete - C++
Изучаю C++ и у меня задание разбить текст неопределенной длинны на массив строк. Нацарапал класс типа string ниже выложу. В него задача...

Помогите пож-та, ошибка при работе delete - C++
enum place { first = 1, second }; class Passanger { public: Passanger(); void Call(); void PushButton(); int...

Ошибка с delete при удалении памяти из-под строки - C++
strngbad.h // strngbad.h -- flawed string class definition #include <iostream> #ifndef STRNGBAD_H_ #define STRNGBAD_H_ class...

Ошибка при использовании оператора delete в Visual Studio 2010 - C++
Изучаю указатели в C++. Есть следующий код: #include <iostream> #include <locale> using namespace std; int main() { ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Kerry_Jr
Модератор
Эксперт PHP
2167 / 1963 / 685
Регистрация: 14.05.2014
Сообщений: 5,747
Записей в блоге: 1
Завершенные тесты: 5
25.02.2015, 19:02     Ошибка при delete #2
hiphone, для http и resp память выделяется динамически?
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
25.02.2015, 19:12  [ТС]     Ошибка при delete #3
да, конечно


P.S. Понял, такое только на resp вылетает, на http нет, а вот почему - не понятно
Croessmah
Модератор
Эксперт CЭксперт С++
12980 / 7292 / 812
Регистрация: 27.09.2012
Сообщений: 18,007
Записей в блоге: 3
Завершенные тесты: 1
25.02.2015, 19:25     Ошибка при delete #4
hiphone, возможные причины: где-то выход за пределы выделенной памяти, не соответствие операций выледения и освобождения(new->delete,new[]->delete[]), память выделялась не с помощью new(malloc или вообще на стеке функции), двойной delete, ошибка в деструкторе, указатель resp уже не существует во время вызова delete и там мусор
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
25.02.2015, 20:26  [ТС]     Ошибка при delete #5
Проблема в том, что не каждый раз так вылетает, я сделал проверку if (resp) но все-равно есть такие случаи и почему try/catch их не ловит?
DrOffset
6920 / 4113 / 941
Регистрация: 30.01.2014
Сообщений: 6,908
25.02.2015, 20:48     Ошибка при delete #6
Цитата Сообщение от hiphone Посмотреть сообщение
но все-равно есть такие случаи и почему try/catch их не ловит?
Потому что это ошибка в программе (т.е. по сути твоя ошибка), а не исключительная ситуация.
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
25.02.2015, 20:55  [ТС]     Ошибка при delete #7
как же тогда проверить переменную перед удалением?
DrOffset
6920 / 4113 / 941
Регистрация: 30.01.2014
Сообщений: 6,908
25.02.2015, 21:13     Ошибка при delete #8
Цитата Сообщение от hiphone Посмотреть сообщение
как же тогда проверить переменную перед удалением?
Ее не надо проверять. Нужно обеспечить корректность заранее.
Пока что сложно тебе что-то конкретное советовать, потому что ошибка находится за пределами кода, который виден на скрине.
schdub
2940 / 1284 / 238
Регистрация: 19.01.2009
Сообщений: 3,360
Завершенные тесты: 1
26.02.2015, 21:16     Ошибка при delete #9
Цитата Сообщение от hiphone Посмотреть сообщение
try/catch их не ловит
hiphone, try/catch не ловит Access Violation, но зато можно поймать с помощью __try/__except, используйте SEH. Но следует отметить, что подобная ошибка может быть сиптомом серьезных проблем у вас в коде.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2015, 15:37     Ошибка при delete
Еще ссылки по теме:

Почему при выполнении оператора delete возникает ошибка "program.exe has triggered a breakpoint"? - C++
class test { public: void a() { std::cout << "test::a" << std::endl; } }; class test2 : public test { public: ...

ошибка delete [] - C++
string res = "asd"; char* temp = new char; strcpy(temp, res.c_str()); //------- delete temp; когда выполняется последняя строка,...

Delete[] Ошибка - C++
Здравствуйте. Я никак не могу разобраться с одной ошибкой при освобождении памяти. Причем эта ошибка довольно странная, она появляется...

Ошибка освобождения памяти new/delete - C++
При выполнении оператора deleterez вылетает ошибка BLOCK_TYPE_IS_VALID(pHead->nBlockUse) #include <iostream> using namespace std;...

Ошибка E2044 - operator delete must return void - C++ Builder
Среда - С++ Builder 2006 Суть такова: Только начали изучать сишку. Выполняю домашку, нужно составить форму с кнопкой и вычисляемым...


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

Или воспользуйтесь поиском по форуму:
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 544
01.03.2015, 15:37  [ТС]     Ошибка при delete #10
Сделал вот так, ошибок нет, но после использования класса и его удаления почему-то память не освобождается.


C++
1
2
3
B *b = new B();
    b->Start(l);
    delete b;
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
36
37
38
39
40
41
42
43
44
class B
{
private:
    int error;
    CkHttp* http;
    CkHttpRequest req;
    CkHttpResponse* resp;
    string file;
    vector<string> d;
    int errors;
 
    void Clear() {
        try{
            if (http) {
                http->dispose();
                delete http;
                http = nullptr;
            }
            if (resp) {
                resp->dispose();
                delete resp;
                resp = nullptr;
            }
            file.clear();
            d.clear();
        }
        catch (...) {}
    }
public:
    B() {
        http = new CkHttp();
        resp = new CkHttpResponse();
        error = 0;
        errors = 0;
    }
 
        void Start(string s) {
 
        }
 
    ~B() {
        Clear();
    }
};
Yandex
Объявления
01.03.2015, 15:37     Ошибка при delete
Ответ Создать тему
Опции темы

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