Вопросы с тегом «allocation»

8105
Что и где находится стек и куча?

Книги по языку программирования объясняют, что типы значений создаются в стеке , а ссылочные типы создаются в куче , без объяснения того, что представляют собой эти две вещи. Я не прочитал четкое объяснение этого. Я понимаю, что такое стек . Но, Где и что они (физически в памяти реального...

401
Почему использование alloca () не считается хорошей практикой?

alloca()выделяет память в стеке, а не в куче, как в случае malloc(). Итак, когда я возвращаюсь из рутины, память освобождается. На самом деле это решает мою проблему освобождения динамически выделяемой памяти. Освобождение памяти, выделенной через malloc()это, является большой головной болью и,...

150
Является ли хорошей практикой обнулять указатель после его удаления?

Я начну с того, что использую умные указатели, и вам никогда не придется об этом беспокоиться. Какие проблемы со следующим кодом? Foo * p = new Foo; // (use p) delete p; p = NULL; Это было вызвано ответом и комментариями к другому вопросу. Один комментарий от Нила Баттерворта вызвал несколько...

110
Причудливый способ размещения двумерного массива?

В проекте кто-то выдвинул эту строку: double (*e)[n+1] = malloc((n+1) * sizeof(*e)); Что предположительно создает двумерный массив из (n + 1) * (n + 1) удвоений. Предположительно , я говорю, потому что до сих пор ни один из тех, кого я спрашивал, не мог сказать мне, что именно это делает, ни откуда...

100
Разница между распределением статической памяти и распределением динамической памяти

Я хотел бы знать, в чем разница между распределением статической памяти и распределением динамической памяти? Не могли бы вы объяснить это каким-нибудь примером?...

91
Статический массив против динамического массива в C ++

В чем разница между статическим массивом и динамическим массивом в C ++? Я должен выполнить задание для своего класса, и в нем говорится, что нельзя использовать статические массивы, а только динамические массивы. Я искал в книге и в Интернете, но, кажется, не понимаю. Я думал, что статика была...

68
'New' и 'delete' устарели в C ++?

Я наткнулся на тест, который включал объявление массива с различными размерами. Первое, что пришло мне в голову, это то, что мне нужно будет использовать динамическое распределение с newкомандой, например так: while(T--) { int N; cin >> N; int *array = new int[N]; // Do something with 'array'...

14
Почему стековая память выделяется, когда она не используется?

Рассмотрим следующий пример: struct vector { int size() const; bool empty() const; }; bool vector::empty() const { return size() == 0; } Сгенерированный код сборки для vector::empty(по clang, с оптимизацией): push rax call vector::size() const test eax, eax sete al pop rcx ret Почему он выделяет...