-Поиск по дневнику

Поиск сообщений в mekteb

 -Подписка по e-mail

 

 -Статистика

Статистика LiveInternet.ru: показано количество хитов и посетителей
Создан: 17.02.2013
Записей:
Комментариев:
Написано: 35


C++ 2005

Суббота, 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).
Рубрики:  C++

 

Добавить комментарий:
Текст комментария: смайлики

Проверка орфографии: (найти ошибки)

Прикрепить картинку:

 Переводить URL в ссылку
 Подписаться на комментарии
 Подписать картинку