Модераторы: Daevaorn

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как такое может быть?! Динамический массив 
:(
    Опции темы
math_beginer
Дата 2.4.2004, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.5.2003

Репутация: нет
Всего: 1



Цитата
Thread'ы юзаешь??

Вот, точно, сделал без потоков - все работает smile.gif. Только почему в потоках неработает - все равно не понятно...
Цитата
А вообще смени new/delete на malloc/free--и отлаживать легче и лучше

А вчем разница?
--------------------
Метод "Кнута и Пряника" - алгоритм, описанный в известной монографии Кнута и позднее модифицированный русским программистом Пряником.
PM MAIL   Вверх
bel_nikita
Дата 2.4.2004, 16:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



to OlegsDP
Цитата
Так ведь проблема в том, что программа рушится совсем не там, где ошибка

Программа всегда рушится только там, где ошибка wink.gif
Включаете ДЕБАГ режим. Запускаете софт. Софт вылетает, типа Access Violation и т.п.
В Call Stack будет находиться текущаю функция, т.е. фукция в которой произошел сбой!
Смотрите параметры функции и т.п. Т.е. возможно локализовать ошибку без комментария.
to math_beginer
Цитата
Вот, точно, сделал без потоков - все работает . Только почему в потоках неработает - все равно не понятно...

Синхронизация нам поможет tounge.gif

Разные треды иммеют доступ к ресурсу! А это очень плохо. Надо синхронизировать доступ


--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
math_beginer
Дата 2.4.2004, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 29.5.2003

Репутация: нет
Всего: 1



Цитата
Программа всегда рушится только там, где ошибка

Но ведь в данном конкретном случае это не так!!!
Сам по себе конструктор работает! И что самое непонятное: Принудительно присваеваем указателю NULL (допустим даже, что при этом теряется память). ПОЧЕМУ NULL-вому указателю не может быть выделена память????? Даже пусть память не выделяется, но не работает ведь именно оператор new, до проверки выделилась память или нет программа даже не доходит!!
ЗЫ Я скоро уже начну сомневаться что С++ самый надежный язык программирования butbut.gif
--------------------
Метод "Кнута и Пряника" - алгоритм, описанный в известной монографии Кнута и позднее модифицированный русским программистом Пряником.
PM MAIL   Вверх
bel_nikita
Дата 2.4.2004, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2304
Регистрация: 12.10.2003
Где: Поезд №21/22 ( ст . Прага )

Репутация: 21
Всего: 47



math_beginer
А в борланде проверка типа
Код
char* p=new char[100];
if (p==NULL ) ....

не катит. Как я знаю ( сам борланд не юзаю ) тама генерится ecxeption bad_allocate. Так что в строку if (p==NULL ) ты уже ни как не попадешь.
Цитата
ЗЫ Я скоро уже начну сомневаться что С++ самый надежный язык программирования

А что ты понимаешь под надежностью???
С++ это скорее мощный инструмент для программирования, а надежность тут не причем

Что-то мы отвлеклись от темы. Так что у тебя за проблемы?

РS: Еще раз: программа рушится только там где ошибка wink.gif



--------------------
user posted image — регистрация доменов от 150 руб.
PM MAIL WWW ICQ   Вверх
srd
Дата 2.4.2004, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нереварин
**


Профиль
Группа: Участник Клуба
Сообщений: 951
Регистрация: 30.8.2003
Где: Владивосток

Репутация: 27
Всего: 49



Цитата
А вообще смени new/delete на malloc/free--и отлаживать легче и лучше

В программах на C++ этого делать ни в коем случа нельзя. new/delete вызывают конструктор и деструктор, а malloc/free нет.

Цитата
Как я знаю ( сам борланд не юзаю ) тама генерится ecxeption bad_allocate. Так что в строку if (p==NULL ) ты уже ни как не попадешь.

Повторюсь, но скажу, что и в MSVC++ в случае неудачи new кидает bad_alloc, если включен любой хедер из STL, т.к. они включают стандартный заголовок <new>


--------------------
Не смей читать мою подпись!!!
PM MAIL Jabber   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++:Общие вопросы"
Earnest Daevaorn

Добро пожаловать!

  • Черновик стандарта C++ (за октябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика(4.4мб).
  • Черновик стандарта C (за сентябрь 2005) можно скачать с этого сайта. Прямая ссылка на файл черновика (3.4мб).
  • Прежде чем задать вопрос, прочтите это и/или это!
  • Здесь хранится весь мировой запас ссылок на документы, связанные с C++ :)
  • Не брезгуйте пользоваться тегами [code=cpp][/code].
  • Пожалуйста, не просите написать за вас программы в этом разделе - для этого существует "Центр Помощи".
  • C++ FAQ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.