Форум программистов, компьютерный форум, киберфорум
Наши страницы

C++

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

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

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

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

delete vs. delete [] - C++
Всем привет, в разница использования delete и delete ? я читал, что delete используется для освобождения массивов, а delete для...

delete void* - C++
class MyClass{ public: int i; }; void main() { MyClass* MyObj = new MyClass; MyObj->i = 10; void* VoidLink =...

Backspace и Delete - C++
функция обрабатывает ввод символов 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, +, –. По нажатию клавиши Esc ввод прекращается, и функция возвращает...

оператор delete у null - C++
Один человек говорил что опасно использовать такой код (delete к null указателю), ну или когда-то было опасно, и что желательно перед...

Ошибка при компилировании - C++
Помогите пожалуйста. При компиляции данной программы в Code Blocks с компилятором mingw и подключением библиотеки graphics.h выскакивают...

Ошибка при вводе данных - C++
Вот прогамма. Она просит ввести Ваше име, возраст и пол. Первые два считывает, а с последним прблеммы... Не ждёт ввод данных, и пускает...

9
Kerry_Jr
Модератор
Эксперт PHP
2206 / 2002 / 701
Регистрация: 14.05.2014
Сообщений: 5,867
Записей в блоге: 1
Завершенные тесты: 5
25.02.2015, 19:02 #2
hiphone, для http и resp память выделяется динамически?
0
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 549
25.02.2015, 19:12  [ТС] #3
да, конечно


P.S. Понял, такое только на resp вылетает, на http нет, а вот почему - не понятно
0
Croessmah
Ушел
Эксперт CЭксперт С++
13557 / 7707 / 872
Регистрация: 27.09.2012
Сообщений: 18,996
Записей в блоге: 3
Завершенные тесты: 1
25.02.2015, 19:25 #4
hiphone, возможные причины: где-то выход за пределы выделенной памяти, не соответствие операций выледения и освобождения(new->delete,new[]->delete[]), память выделялась не с помощью new(malloc или вообще на стеке функции), двойной delete, ошибка в деструкторе, указатель resp уже не существует во время вызова delete и там мусор
0
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 549
25.02.2015, 20:26  [ТС] #5
Проблема в том, что не каждый раз так вылетает, я сделал проверку if (resp) но все-равно есть такие случаи и почему try/catch их не ловит?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
25.02.2015, 20:48 #6
Цитата Сообщение от hiphone Посмотреть сообщение
но все-равно есть такие случаи и почему try/catch их не ловит?
Потому что это ошибка в программе (т.е. по сути твоя ошибка), а не исключительная ситуация.
0
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 549
25.02.2015, 20:55  [ТС] #7
как же тогда проверить переменную перед удалением?
0
DrOffset
7377 / 4454 / 1009
Регистрация: 30.01.2014
Сообщений: 7,304
25.02.2015, 21:13 #8
Цитата Сообщение от hiphone Посмотреть сообщение
как же тогда проверить переменную перед удалением?
Ее не надо проверять. Нужно обеспечить корректность заранее.
Пока что сложно тебе что-то конкретное советовать, потому что ошибка находится за пределами кода, который виден на скрине.
0
schdub
2959 / 1304 / 239
Регистрация: 19.01.2009
Сообщений: 3,431
Завершенные тесты: 1
26.02.2015, 21:16 #9
Цитата Сообщение от hiphone Посмотреть сообщение
try/catch их не ловит
hiphone, try/catch не ловит Access Violation, но зато можно поймать с помощью __try/__except, используйте SEH. Но следует отметить, что подобная ошибка может быть сиптомом серьезных проблем у вас в коде.
0
hiphone
13 / 13 / 3
Регистрация: 28.01.2012
Сообщений: 549
01.03.2015, 15:37  [ТС] #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();
    }
};
0
01.03.2015, 15:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2015, 15:37
Привет! Вот еще темы с ответами:

Ошибка при установки VS2010 - C++
У меня не работает Visual Studio 2010. По каким причинам - не знаю. Все начинается с установки вс ультимэйт 2010. Оно вроде бы...

Ошибка сегментирования при компиляции - C++
Когда компилирую через g++ компилируется, при запуске выдает ошибку сегментирования, а при компиляции через NetBeans IDE выдает две ошибки,...

Ошибка при инициализации regex_token_iterator - C++
Объясните почему тут ошибка ? #include &lt;iostream&gt; #include &lt;cstdio&gt; #include &lt;regex&gt; #include &lt;iterator&gt; using namespace...

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


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

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

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