Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Утечка памяти и delete - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Создание календаря http://www.cyberforum.ru/cpp-beginners/thread409762.html
Печать календаря на заданный месяц заданного года с отметкой(звездочкой) тех дат, которые зафиксированы в файле-справочнике; под календарем необходимо распечатать подробную информацию по этим датам....
C++ Помогите пожалуйста решить??? Разработать алгоритм обработки двумерного массива размера n*m. Числа m и n, а также элементы массива взять из файла. Необходимо каждый элемент массива увеличить на сумму элементов его строки.... http://www.cyberforum.ru/cpp-beginners/thread409761.html
Число Армстронга. C++
Составить функцию, которая определяет, является ли полученное ею целое число числом Армстронга. Число Армстронга - это число, содержащее K цифр, и равное сумме своих цифр, каждая из которых возведена...
правило Константы слева C++
Еще давно научили этому, чтобы писать в условиях сначала константу, а потом переменную которая проверяется. А сейчас рефакторил проект и возникла вопрос насколько широко это распространено? Помогает...
C++ Есть на паскале, а как сделать на с++? http://www.cyberforum.ru/cpp-beginners/thread409734.html
Описать процедуру Chessboard(M, N, A), формирующую по целым положительным числам M и N матрицу A размера M x N, которая содержит числа 0 и 1, расположенные в «шахматном» порядке, причем A1.1 = 0....
C++ написать программу на С++ плюс,помимо указанных операций реализовать дополнительные методы. Очень надеюсь на вашу помощь..Очень важна данная программа.. Задание: Решением задачи является класс с закрытыми (private) полями, где операции реализуются как методы класса. Помимо указанных в... подробнее

Показать сообщение отдельно
OrmaJever
9 / 9 / 0
Регистрация: 10.11.2011
Сообщений: 241
19.12.2011, 15:08  [ТС]
Цитата Сообщение от OrmaJever Посмотреть сообщение
Может есть какие то хитрости?
А хитрость то есть. Разве вы не знали что можно перегружать операторы new и delete ? Вчера в поисках метода борьбы с утечками нашёл просто божественую весч.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#include <windows.h>
 
#ifdef _DEBUG
#include <iostream.h>
 
inline void * __cdecl operator new[](unsigned int size, const char *file, int line)
{
    void *ptr = (void *)malloc(size);
    cout << "Memory size of " << size << " bytes allocated to array p(" << ptr << ") in " << file << ":" << line << endl;
    return ptr;
};
 
inline void * __cdecl operator new(unsigned int size, const char *file, int line)
{
    void *ptr = (void *)malloc(size);
    cout << "Memory size of " << size << " bytes allocated p(" << ptr << ") in " << file << ":" << line << endl;
    return ptr;
};
 
inline void __cdecl operator delete(void *p)
{
    cout << "Memory is deleted p(" << p << ")" << endl;
    free(p);
};
inline void __cdecl operator delete[](void *p)
{
    cout << "Memory is deleted from array p(" << p << ")" << endl;
    free(p);
 
};
#endif
 
#ifdef _DEBUG
    #define DEBUG_NEW new(__FILE__, __LINE__)
#else
    #define DEBUG_NEW new
#endif
 
#define new DEBUG_NEW
 
#endif
Видно в какой строке выделилась память и адрес указателя, затем какие указатели удалились. Это гениально ...
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru