В течение некоторого времени я с радостью использовал dlmalloc для кросс-платформенного проекта (Windows, Mac OS X, Ubuntu). В последнее время, однако, кажется, что использование dlmalloc приводит к сбою при выходе из Windows 7.dlmalloc crash on Win7
Чтобы убедиться, что это не было чем-то глупо в моем проекте, я создал суперминимумную тестовую программу - это не делает ничего, кроме возвращения из основного. Одна версия («malloctest
») ссылается на dlmalloc, а другая («regulartest
»). На WinXP оба работают нормально. В Windows 7, malloctest
сбои. Вы можете увидеть скринкасты тестов here.
Вопрос: почему это происходит? Это ошибка в dlmalloc? Или изменился загрузчик в Windows 7? Есть ли обходной путь?
FYI, вот тестовый код (test.cpp):
#include <stdio.h>
int main() {
return 0;
}
и вот NMAKE Makefile:
all: regulartest.exe malloctest.exe
malloctest.exe: malloc.obj test.obj
link /out:[email protected] $**
regulartest.exe: test.obj
link /out:[email protected] $**
clean:
del *.exe *.obj
Для краткости я не буду включать источник dlmalloc в этот пост, но вы можете получить его (v2.8.4) here.
Edit: Смотрите эти другие relavent SO сообщения:
Это не ошибка, а объяснение **, почему ** замена 'malloc' (или любой стандартной функции C) была указана как ** неопределенное поведение **. –