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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 9, средняя оценка - 4.89
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
#1

Debug assertion failed - C++

13.03.2013, 00:22. Просмотров 1207. Ответов 6
Метки нет (Все метки)

Во время отладки вылазит такая ошибка,не могу понять в чём дело
0
Миниатюры
Debug assertion failed  
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.03.2013, 00:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Debug assertion failed (C++):

Debug Assertion Failed! - C++
Доброго времени суток. Имеется код: #include <iostream> #include <vector> using namespace std; int main() { setlocale(LC_ALL,...

Debug Assertion Failed! - C++
Доброго времени суток! Не могу понять где ошибка, подскажите пожалуйста. код: #include "stdafx.h" #include <iostream> #include...

debug assertion failed - C++
Помогите пожалуйста,пишет debug assertion failed,когда запускаю .exe, а когда компилирую в программе и запускаю,все отлично идёт,в чем...

Debug assertion failed - C++
Проблема при попытке релиза, дебажится при этом нормально, объясните мне, что может быть не так, где искать баги. (скрин ниже) ...

Debug Assertion Failed - C++
Ошибка. Не могу понять что не так. Как я понял с дебагера, проблема во втором освобождении памяти. Вообщем хелп ми) // hw_3.cpp :...

Debug Assertion Failed C++ - C++
Здравствуйте. Не могу понять что не так. Выдает ошибку. Помогите разобраться и подправить. #include<string.h> #include<iostream> ...

6
Eagle123
6 / 6 / 0
Регистрация: 03.10.2012
Сообщений: 51
13.03.2013, 00:24 #2
Код в студию. Так трудно понять, но скорее всего ошибка именно там
0
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 00:28  [ТС] #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()
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
13.03.2013, 00:29 #4
Цитата Сообщение от SKS-65 Посмотреть сообщение
delete []p;
это ещё что?
ты в p разве хранил память, выделенную new[]?

Нет, память, возвращённая new хранится в p[1], p[2]
следовательно освобождать надо
delete p[1];
delete p[2];///не delete[] p, т.к. не было p=new ...[...]
0
SKS-65
5 / 5 / 1
Регистрация: 18.10.2011
Сообщений: 187
13.03.2013, 00:33  [ТС] #5
проблема не в этом, при delete p; та же ошибка
0
Kuzia domovenok
1892 / 1747 / 119
Регистрация: 25.03.2012
Сообщений: 5,936
Записей в блоге: 1
13.03.2013, 00:41 #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];
1
OhMyGodSoLong
~ Эврика! ~
1244 / 993 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
13.03.2013, 00:42 #7
Ммм... поняны... Вот есть массив в строке 42. Из указателей. А его инициализировали?
Не обращайте внимания.
0
13.03.2013, 00:42
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.03.2013, 00:42
Привет! Вот еще темы с ответами:

Debug assertion failed - C++
Здравствуйте! Есть 2 двусвязных списка. Нужно написать метод merge который эти списки соединяет. Сам метод я написал. Запускаю, ввожу...

Debug Assertion Failed - C++
Создавал небольшой генератор ролей для персонажа и натолкнулся на проблему пиктрелейтед. До определенного момента все работало, пока я не...

Debug Assertion Failed - C++
Привет всем. Написал такую программу. #include &lt;stdio.h&gt; int n, m; int i, q, d; void merge(int a, int b, int c, int n, int...

Debug assertion failed - C++
Я в с++ делаю первые шаги, так-что прошу сильно не пинать :) При вызове этой функции int qwerty(CComQIPtr &lt;IBody2&gt; pBody) { ...


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

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

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