обойтись малой кровью
От: omb  
Дата: 14.10.11 11:14
Оценка:

Альтернативный подход заключается в переопределении операторов new и delete для всего проекта. Но это не всегда может быть приемлемо в середине разработки, и потому рассмотренный выше способ помогает, на мой взгляд, обойтись малой кровью.

не согласен, на мой взгляд, обойтись малой кровью — это как раз переопределить операторы,

я это сделал так:
определил в исходном проекте (exe) 2 функции типа my_malloc и my_free, которые вызывают, соответственно malloc и free, экспортировал их,
а во всех подключаемых модулях, при загрузке на DLL_PROCESS_ATTACH импортиртирую их динамически из основного модуля ( ::GetProcAddress( NULL, ... ) ),
и в операторах их вызываю,

т.е. выходит так, что CRT хоть и инициирует свою кучу (_crtheap) в каждом модуле,
но STL использует только ту, что создается в главном (exe)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.