Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

WinMPI и malloc

562
10 апреля 2005 года
tarekon
175 / / 19.08.2003
Такой вопрос. При запуске MPI программы на более чем двух псевдопроцессорах, вызов malloc'a возвращает одну и ту же область памяти. Кто-нибудь встречал подобную проблему? Я пытался запустить с ключом -nosharedmem (или что-то близкое по смыслу), синхронизировал вызов malloc'a так что процессы получали куски памяти строго по очереди, но они все равно ссылаются на 0xCDCDCDCD. Что делать? Нужно, что бы у каждого процесса был свой кусок.
425
11 апреля 2005 года
sq_deep
498 / / 18.02.2005
Цитата:
Originally posted by tarekon
... вызов malloc'a возвращает одну и ту же область памяти.
...
... ссылаются на 0xCDCDCDCD...


В отладочном режиме неинициализированные области памяти заполняются кодом 0xCD специально для того, чтобы под отладчиком сразу было видно, что используется мусор. Поэтому по адресам, только что возвращённым функцией malloc(), вы с большой вероятностью увидите 0xCDCDCDCD.

Пишите туда. Всё должно быть нормально.

Вот если два последовательных обращения к malloc() дают один и тот же адрес, тогда malloc() работает неверно и надо искать причину. Скорее всего, в своём коде.

562
12 апреля 2005 года
tarekon
175 / / 19.08.2003
Цитата:
Originally posted by sq_deep
Вот если два последовательных обращения к malloc() дают один и тот же адрес, тогда malloc() работает неверно и надо искать причину. Скорее всего, в своём коде.


А какая может быть ошибка в коде? malloc'у же вроде бы все по барабану, даже ошибки в стеке.
А за 0xCDCDCDCD спасибо. Я так и думал, что это что-то обозначает...

425
12 апреля 2005 года
sq_deep
498 / / 18.02.2005
Цитата:
Originally posted by tarekon
А какая может быть ошибка в коде?


В какой-то книжке я прочитал следующее. «Программирование даёт больше возможностей для совершения ошибок, чем любая другая область человеческой деятельности» :D

А ошибки в стеке обычно приводят к полному развалу, так что до malloc'а, скорее всего, просто не доходит дело.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог