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

Debug assertion failed - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 00:22     Debug assertion failed #1
Во время отладки вылазит такая ошибка,не могу понять в чём дело
Миниатюры
Debug assertion failed  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2013, 00:22     Debug assertion failed
Посмотрите здесь:

C++ debug assertion failed
ошибка debug assertion failed C++
Debug assertion failed C++
Debug Assertion Failed C++
C++ Debug Assertion Failed
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
13.03.2013, 00:24     Debug assertion failed #2
Код в студию. Так трудно понять, но скорее всего ошибка именно там
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 00:28  [ТС]     Debug assertion failed #3
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
45
46
47
48
// labar.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include "iostream"
#include "conio.h"
using namespace std;
class TMessage
{
public:
    char Topic[30];
    char Author[30];
    char Text[250];
};
 
class TTopic
{
public:
    TMessage* AddMessage(char* topic,char* author,char* text);
    void GetMessage(TMessage*);
    
};
TMessage* TTopic::AddMessage(char* topic,char* author,char* text)
{   
   TMessage* p=new TMessage;
    strcpy(p->Topic,topic);
    strcpy(p->Author,author);
    strcpy(p->Text,text);
    return p;
}
void TTopic::GetMessage(TMessage*p)
{
    cout<<"TOPIC - "<<p->Topic<<'\n'
          <<"AUTHOR - "<<p->Author<<'\n'
          <<"TEXT - "<<p->Text<<endl;
    
}
void main()
{
    int* i=0;
    TTopic top;
    TMessage* p[10];
        p[1]=top.AddMessage("kniga","Stiven King","parapapa");
        p[2]=top.AddMessage("kniga","Stiven","parapapa");
    top.GetMessage(p[1]);
    delete []p;
    getch();
}
Добавлено через 33 секунды
ошибка как я понял в методе AddMessage()
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
13.03.2013, 00:29     Debug assertion failed #4
Цитата Сообщение от SKS-65 Посмотреть сообщение
delete []p;
это ещё что?
ты в p разве хранил память, выделенную new[]?

Нет, память, возвращённая new хранится в p[1], p[2]
следовательно освобождать надо
delete p[1];
delete p[2];///не delete[] p, т.к. не было p=new ...[...]
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 00:33  [ТС]     Debug assertion failed #5
проблема не в этом, при delete p; та же ошибка
Kuzia domovenok
 Аватар для Kuzia domovenok
1882 / 1737 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
13.03.2013, 00:41     Debug assertion failed #6
Цитата Сообщение от SKS-65 Посмотреть сообщение
проблема не в этом, при delete p; та же ошибка
ой, да ладно! А где я советовал такое?
Внимательно смотри, какому выражению присваивалось = new
и к нему же или к его копии, возвращённой из функции применяй delete

Добавлено через 5 минут
Рассуждай так:
Цитата Сообщение от SKS-65 Посмотреть сообщение
TMessage* p=new TMessage;
Ага, указатель на удаляемую память хранится в p
Цитата Сообщение от SKS-65 Посмотреть сообщение
return p;
Ага, далее p возвращается как результат работы функции. Куда присваивается значение функции(возвращаемое)?
Цитата Сообщение от SKS-65 Посмотреть сообщение
p[1]=top.AddMessage("kniga","Stiven King","parapapa");
Ага, вот сюда. То есть это эквивалентно p[1]=new TMessage;//+strcpy...
Цитата Сообщение от SKS-65 Посмотреть сообщение
p[2]=top.AddMessage("kniga","Stiven","parapapa");
Ага, и ещё сюда. То есть это эквивалентно p[2]=new TMessage;//+strcpy...

Значит к чему надо применить delete?
Верно!
C++
1
2
delete p[1];
delete p[2];
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2013, 00:42     Debug assertion failed
Еще ссылки по теме:

C++ Debug assertion failed
Debug assertion failed C++
Debug Assertion Failed! C++

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

Или воспользуйтесь поиском по форуму:
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 00:42     Debug assertion failed #7
Ммм... поняны... Вот есть массив в строке 42. Из указателей. А его инициализировали?
Не обращайте внимания.
Yandex
Объявления
13.03.2013, 00:42     Debug assertion failed
Ответ Создать тему
Опции темы

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