Начал писать софт без тредов, потом решил переделать с использованием тредов. И сразу возникли проблемы с выделением/освобожением памяти.
Я пришел к выводу, что надо пользоваться reentrant аналогами стандартных функций.
Только возникли вопросы:
Этим функциям надо передавать указатель на REENT , а вот инфы, как его инициализировать я так нигде и не нашел. Подскажите пожалуйста, что с ним делать.
И стоит ли вообще смотреть в сторону стандартных reentrant функций?
Проблемы выглядят примерно так:
---
кусок lcurlutils.c
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)
---