Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
Архив форумов ЦИТФорума
Море(!) вопросов - Море(!) ответов
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 
Как правильно задавать вопросы

gnu pthread, malloc vs _malloc_r и прочие reentrant функции

 
Перейти:  
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование
Предыдущая тема :: Следующая тема  
Автор Сообщение
Azazar



Зарегистрирован: 15.02.2004
Сообщения: 3

СообщениеДобавлено: Чт Май 18 2006 14:49    Заголовок сообщения: gnu pthread, malloc vs _malloc_r и прочие reentrant функции Ответить с цитатой

Начал писать софт без тредов, потом решил переделать с использованием тредов. И сразу возникли проблемы с выделением/освобожением памяти.

Я пришел к выводу, что надо пользоваться reentrant аналогами стандартных функций.

Только возник 1 вопрос:

Этим функциям надо передавать указатель на REENT , а вот инфы, как его инициализировать я так нигде и не нашел. Подскажите пожалуйста, что с ним делать.

Проблемы выглядят примерно так:
---
кусок lcurlutils.c

27 free(mem->data);
20 }
20
30 void MemoryStruct_empty(MemoryStruct *mem)
31 {
32 MemoryStruct_free(mem);
33 MemoryStruct_init(mem);
34 }
35
36 int MemoryStruct_append(MemoryStruct *mem,void *data,size_t length)
37 {
38 if (length == 0) {
39 return 0;
40 } else if (mem->size == 0) {
41 mem->data = malloc(length);
42
43 if (mem->data == NULL)
44 return 0;
45
46 mem->size = length;
47 memcpy(mem->data,data,length);
48 } else {
49 register char *n;
50
51 n=realloc(mem->data, mem->size + length);

кусок лога MEMWATCH:

relink: <107999> lcurlutils.c(51) attempting to repair MW-0x409dd870...
relink: successful, no allocations lost
relink: <121936> lcurlutils.c(51) attempting to repair MW-0x92a8dd8...
relink: successful, size information lost for MW-0x92a8dd8
internal: <121938> lcurlutils.c(51), checksum for MW-0x92a8dd8 is incorrect
overflow: <121938> lcurlutils.c(51), 0 bytes alloc'd at <121933> <relinked>(51)
relink: <149459> lcurlutils.c(51) attempting to repair MW-0x40acebc0...
relink: successful, size information lost for MW-0x40acebc0
internal: <149486> lcurlutils.c(51), mwIsOwned fails for MW-0x40acebc0
realloc: <149486> lcurlutils.c(51), 0x40acebe4 was freed from lcurlutils.c(51)
internal: <149499> lcurlutils.c(27), checksum for MW-0x40acebc0 is incorrect
overflow: <149499> lcurlutils.c(27), 0 bytes alloc'd at <149456> <relinked>(51)
relink: <387179> lcurlutils.c(51) attempting to repair MW-0xaf5f0b8...
relink: MW-0xaf5f0b8 is the head (first) allocation
relink: successful, size information lost for MW-0xaf5f0b8
internal: <387215> lcurlutils.c(51), checksum for MW-0xaf5f0b8 is incorrect
overflow: <387215> lcurlutils.c(51), 0 bytes alloc'd at <387175> <relinked>(51)
relink: <596150> lcurlutils.c(51) attempting to repair MW-0x435c11e8...
relink: successful, size information lost for MW-0x435c11e8
internal: <596165> lcurlutils.c(51), checksum for MW-0x435c11e8 is incorrect
overflow: <596165> lcurlutils.c(51), 0 bytes alloc'd at <596147> <relinked>(51)
internal: <1325645> lcurlutils.c(51), checksum for MW-0x470241c0 is incorrect
overflow: <1325647> lcurlutils.c(51), 0 bytes alloc'd at <1325628> <relinked>(51)
---
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Большой Хо



Зарегистрирован: 26.09.2006
Сообщения: 2

СообщениеДобавлено: Вт Сен 26 2006 13:23    Заголовок сообщения: Ответить с цитатой

malloc/realloc/free - thread safe функции. Проблема скорее всего в коде - глобальные переменные, неблокируемая запись.
_________________
SY.
Vladimir
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Показать сообщения:   
Этот форум закрыт, вы не можете писать новые сообщения и редактировать старые.   Эта тема закрыта, вы не можете писать ответы и редактировать сообщения.    Список форумов Архив форумов ЦИТФорума -> Программирование Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2002 phpBB Group
Русская поддержка phpBB

 

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 6608306, ICQ 232284597
Пресс-релизы — pr@citforum.ru
Послать комментарий
Информация для авторов
This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2006 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...