Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / микрософт, crtdbg.h, утечки памяти ++ / 10 сообщений из 10, страница 1 из 1
19.04.2016, 10:40
    #39218849
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
расскажите, плз, что тут очевидного
https://habrahabr.ru/post/82514/ Так сложилось, что по версию Microsoft Visual C++ 6.0 за эту информацию отвечала следующее переопределение функции new в хедере crtdbg.h:

#ifdef _CRTDBG_MAP_ALLOC
inline void* __cdecl operator new(unsigned int s)
{ return ::operator new(s, _NORMAL_BLOCK, __FILE__, __LINE__); }
#endif /* _CRTDBG_MAP_ALLOC */

* This source code was highlighted with Source Code Highlighter.


И, нетрудно догадаться, это не давало желаемого результата, __FILE__:__LINE__ всегда разворачивались в «crtdbg.h file line 512».

почему не давало результата
...
Рейтинг: 0 / 0
19.04.2016, 15:27
    #39219301
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
tchingiz,

Ты бы не читал всякую хрень в интернете...

Там надо было ещё В КАЖДОМ ИСХОДНИКЕ в начале переопределять new на _DEBUG_NEW или что-то в этом роде.
ЯВНО, В КАЖДОМ *.cpp
...
Рейтинг: 0 / 0
19.04.2016, 16:12
    #39219347
NekZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
MasterZivЯВНО, В КАЖДОМ *.cpp , Карл!
...
Рейтинг: 0 / 0
19.04.2016, 17:08
    #39219430
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
MasterZiv,
это, стыдно признаться, но согласно статье я результата добился (про обнаружение имени
файла и строчки в котором захватывалась неосвобожденная память).
Про каждый файл я недопонял, но stdlib.h я же в каждый файл включаю?
и EOF в каждом файле задается.
...
Рейтинг: 0 / 0
19.04.2016, 19:19
    #39219536
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
tchingiz,

я может и позабыл все, это во времена программирования меня на MFC было,
но там есть такая тонкость, что тебе нужно только тот код отслеживать, который только твой, т. е. даже помодульно по модулям трансляции не годится, потому что в каждом модуле есть как твой код, так и чужой, из заголовков. Поэтому где-то надо включить переключатель "дальше идет мой код ".

в статье об этом вроде бы ни слова, что как бы намекает на её "высокий технический уровень".
...
Рейтинг: 0 / 0
19.04.2016, 19:22
    #39219538
Siemargl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
MasterZiv,

Да нормально там все было. Не то чтобы идеально, но помогала опция в поиске.
...
Рейтинг: 0 / 0
19.04.2016, 19:30
    #39219540
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
еще раз перечитал статью, нет, товарищь там явно не доработал...

там operator new должен быть перегруженный в debug режиме, с двумя дополнительными параметрами: файл и строка.
...
Рейтинг: 0 / 0
20.04.2016, 15:56
    #39220357
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
SiemarglMasterZiv,

Да нормально там все было. Не то чтобы идеально, но помогала опция в поиске.

Где и что было нормально ?
...
Рейтинг: 0 / 0
21.04.2016, 17:32
    #39221582
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
MasterZivеще раз перечитал статью, нет, товарищь там явно не доработал...

там operator new должен быть перегруженный в debug режиме, с двумя дополнительными параметрами: файл и строка.
ну, я в защиту товарища выступлю. Он так и сделал.


Код: plaintext
1.
#define new new( _NORMAL_BLOCK, __FILE__, __LINE__)



То что выше приводилось -
это от программеров микрософта

пысы
ну разве что нужно сделать условную компиляцию
#ifdef _DEBUG
#define new new( _NORMAL_BLOCK, __FILE__, __LINE__)
#endif
...
Рейтинг: 0 / 0
16.05.2016, 17:58
    #39236835
tchingiz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
микрософт, crtdbg.h, утечки памяти ++
tchingiz#ifdef _DEBUG
#define new new( _NORMAL_BLOCK, __FILE__, __LINE__)
#endif
для маллос, саллос, реаллок переопределение с запоминанием имени файла и номера строки
уже сделано в crtdbg.h
и будет работать при заданных макросах

#define _CRTDBG_MAP_ALLOC
и

_DEBUG
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / микрософт, crtdbg.h, утечки памяти ++ / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]