Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 23.10.2011, 22:42   #1
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию Что за ошибка при удалении структуры?

http://codepad.org/qpsuLoea

В общем программа работает правильно, но в конце после отображения данных зависает.

Если заменить cin'ы простым присваиванием, все работает нормально.
ИМХО дело в char*, поясните как для тупого х(
kypck вне форума Ответить с цитированием
Старый 23.10.2011, 22:49   #2
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

не выделена память под строковые данные в fam и country
ну и удаление структуры кривое
забудь о char* вообще и юзай std::string
Rififi вне форума Ответить с цитированием
Старый 23.10.2011, 22:57   #3
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

мне нужно использовать именно char*, ибо string и в union не засунуть, ни strcmp() к нему не использовать, а это нужно в программе (в ссылке представлен только проблемный кусочек кода)

Почему удаление кривое? Напишите пожалуйста исправленный код. С char*
kypck вне форума Ответить с цитированием
Старый 23.10.2011, 23:07   #4
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

в union не засунуть

Зачем? опиши задачу. а то, чувствую, имеем дело с X-Y-Z

ни strcmp() к нему не использовать

не нужно. у std::string полно встроенных методов

Почему удаление кривое?

потому что delete[] - оно только для массивов

в C++ правильно - так:

std::auto_ptr<struc> mem(new struc());
....
return 0;

Напишите пожалуйста исправленный код. С char*

тебе нужно определить конструктор и деструктор в классе.
в первом - выделить память под указатели, во втором - освободить
Rififi вне форума Ответить с цитированием
Старый 23.10.2011, 23:18   #5
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
в union не засунуть

Зачем? опиши задачу. а то, чувствую, имеем дело с X-Y-Z

ни strcmp() к нему не использовать

не нужно. у std::string полно встроенных методов

Почему удаление кривое?

потому что delete[] - оно только для массивов

в C++ правильно - так:

std::auto_ptr<struc> mem(new struc());
....
return 0;

Напишите пожалуйста исправленный код. С char*

тебе нужно определить конструктор и деструктор в классе.
в первом - выделить память под указатели, во втором - освободить



Задачу описывать не буду, просто нужно использовать в данной программе именно char*,

хотите сказать, здесь представлен неправильный пример delete[]?
http://www.cplusplus.com/reference/s...rator%20delete

Последний раз редактировалось kypck; 23.10.2011 в 23:25.
kypck вне форума Ответить с цитированием
Старый 23.10.2011, 23:30   #6
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

kypck

Задачу описывать не буду, просто нужно использовать в данной программе именно char*,

что нужно делать, описано в конце поста #4

хотите сказать, здесь представлен неправильный пример delete[]?
http://www.cplusplus.com/reference/s...rator%20delete


в этом примере нет использования delete[]
Rififi вне форума Ответить с цитированием
Старый 23.10.2011, 23:34   #7
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

Цитата:
Сообщение от Rififi Посмотреть сообщение
kypck

в этом примере нет использования delete[]
Извиняюсь, вот ссылка
http://codepad.org/UDbkfA8G

За решение спасибо, определюсь с конструктором\деструктором
kypck вне форума Ответить с цитированием
Старый 23.10.2011, 23:45   #8
Rififi
Старожил
 
Регистрация: 19.08.2009
Сообщений: 2,119
По умолчанию

http://codepad.org/UDbkfA8G

здесь все верно - создается и удаляется массив объектов
соответствие между new[] / delete [] соблюдено
Rififi вне форума Ответить с цитированием
Старый 23.10.2011, 23:57   #9
kypck
Пользователь
 
Регистрация: 23.10.2011
Сообщений: 35
По умолчанию

http://codepad.org/E408vMBx

Исправленный код, проверьте на корректность?

Последний раз редактировалось kypck; 24.10.2011 в 00:03.
kypck вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка при удалении из БД!!! Delphi 7. NuR1k БД в Delphi 2 21.08.2010 19:19
При удалении ADOStoredProc утверждает что parameter '@iddebt' not found Илья Сергеевич Помощь студентам 0 16.01.2010 04:38
С++. Ошибка при удалении последней строки из файла _Dis_ Помощь студентам 12 28.08.2009 21:33
ошибка при удалении символа Virus191288 Общие вопросы Delphi 13 15.08.2009 14:50
Ошибка при удалении... JRcoker Общие вопросы Delphi 8 29.07.2008 22:53