Суббота, 23 Февраля 2013 г. 17:24
+ в цитатник
Здравствуйте! Прошу помощи в следующем вопросе:
Мне принесли программу, в которой написано (M$ Visual C++ 2005):
int *mas=new int[];
Она успешно компилируется. Объясните, что это значит? Сколько как и сколько тут выделяется памяти?
Ещё один связанный вопрос. Раньше -- на Паскале -- я бы просто сделал memavail. Про С я где-то прочитал, что такой функции нет. А как же в C/C++ контролируют утечки памяти?
Если Вы пользуетесь продуктами от MS, утечку памяти детектировать можно следующим образом.
Код :
#ifdef _DEBUG
#include
#endif
int main()
{
#ifdef _DEBUG
_CrtSetDbgFlag(_CRTDBG_CHECK_ALWAYS_DF|_CRTDBG_ALLOC_MEM_DF|_CRTDBG_LEAK_CHECK_DF);
#endif
const int SIZE=10;
// Выделяем память
int* arr=new int[SIZE];
// Что-то делаем
for(int i=0;i/ Забыли освободить
// delete[] arr;
}
В данном случае не освобождается память под массив. Имеем такой вывод отладки:
Код :
...
Detected memory leaks!
Dumping objects ->
{68} normal block at 0x00757DD8, 40 bytes long.
Data: < > 00 00 00 00 01 00 00 00 02 00 00 00 03 00 00 00
Object dump complete.
Программа "[4880] 187140.exe" завершилась с кодом 0 (0x0).
-
Запись понравилась
-
0
Процитировали
-
0
Сохранили
-