2015-03-28 3 views
0

Я создаю my_data таким образом. Должен ли я вручную освобождать память в конце программы? Если да, то как это сделать? free() дает мне преобразование err, а delete() хочет указатель.C++ Освобождение памяти после инициализации структуры?

struct data{ 
    int a; 
    int b; 

    data(): 
     a(1), 
     b(2) {} 
} my_data; 
+1

Вы должны вручную 'delete' памяти, если вы вручную' new' его. –

ответ

2

Нет, не следует.

Вы не создаете структуру в куче, поэтому нет необходимости освобождать память вручную. Память будет отмечена как доступная ОС в конце программы.

И даже не думайте делать delete &my_data, так как вы почти наверняка получите sefgault, поскольку память освобождается дважды.

Вы должны были бы при использовании динамического распределения, таких как

data* pdata = new data; // needs delete pdata 
+0

Спасибо большое :) – Veiun

+0

Как вы можете сказать, что это «в стеке», не видя никакого контекста? – AnT

+2

@AnT он объявляет переменную: 'struct data {...} my_data; // декларация'. Здесь 'my_data' имеет тип' struct data'. Я что-то упускаю? – vsoftco