Утечка памяти в C/C++

компьютеры программирование программы C++ память

Утечка памяти в C/C++ возможна только если выделил память оператором new и забыл освободить её оператором delete?

А ещё способы утечки памяти существуют?

Примечание:
Действительно забавно.

#include <iostream>
using namespace std;

void main()
{
while(true)
{
long *a = new long;
}
}
Ответы:
освободить не всю память, не правильно освободить
Память можно еще выделять функцией malloc
new без delete
malloc без free (или не тот размер)
ещё создание обьектов, например, в WinApi - функции типа CreatePen, CreateDC и многие другие
Ещё есть функция для выделения памяти malloc, есть различные функции WipApi, которые выделяют память под контексты рисования. Ну, в общем, эти функции в конечном счёте тоже выделяют память через new/malloc.
--
Забавно, как выстро истратится вся память:
while(true)
{
new long a = 0;
}
Есть ещё вариант, один из самых "незаметных" при беглом просмотре кода. Но утечка бывает похуже, чем если забывать delete вообще.


14 лет назад

RPI.su - самая большая русскоязычная база вопросов и ответов. Наш проект был реализован как продолжение популярного сервиса otvety.google.ru, который был закрыт и удален 30 апреля 2015 года. Мы решили воскресить полезный сервис Ответы Гугл, чтобы любой человек смог публично узнать ответ на свой вопрос у интернет сообщества.

Все вопросы, добавленные на сайт ответов Google, мы скопировали и сохранили здесь. Имена старых пользователей также отображены в том виде, в котором они существовали ранее. Только нужно заново пройти регистрацию, чтобы иметь возможность задавать вопросы, или отвечать другим.

Чтобы связаться с нами по любому вопросу О САЙТЕ (реклама, сотрудничество, отзыв о сервисе), пишите на почту [email protected]. Только все общие вопросы размещайте на сайте, на них ответ по почте не предоставляется.