Вопросы с тегом 'dynamic-memory-allocation'

Динамическое распределение памяти, обычно в контексте языков без сбора мусора или обязательного или автоматического подсчета ссылок, относится к процессу или запрашивает операционную систему для блока памяти с переменным размером.
28

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

Книги на языках программирования объясняют, что типы значений создаются в стеке, а ссылочные типы создаются в куче, не объясняя, что это за две вещи. Я не прочитал четкого объяснения этого. Я понимаю, что такое стек. Но, где и что они (физически в ...
17 сент. '08 в 4:18
9

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

Я хотел бы знать, в чем разница между распределением статической памяти и распределением динамической памяти? Не могли бы вы объяснить это с помощью любого примера?
05 дек. '11 в 12:30
4

Новые и удалить все еще полезны в С++ 14?

Учитывая наличие make_unique и make_shared, а также автоматическое удаление деструкторами unique_ptr и shared_ptr, каковы ситуации (помимо поддержки устаревшего кода) для использования new и delete в С++ 14?
10 июн. '15 в 17:12
11

Эффективный связанный список в С++?

Этот документ говорит, что std::list неэффективен: std:: list - крайне неэффективный класс, который редко бывает полезен. Он выполняет распределение кучи для каждого элемента, вставленного в него, поэтому имеет чрезвычайно высокий постоянный коэфф...
16 авг. '17 в 15:44
5

Вызывается деструктор, когда объект выходит из области видимости?

Например: int main() { Foo *leedle = new Foo(); return 0; } class Foo { private: somePointer* bar; public: Foo(); ~Foo(); }; Foo::~Foo() { delete bar; } Будет ли деструктор неявным образом вызван компилятором или будет ...
17 июл. '13 в 14:45
4

Почему моя программа падает, когда я увеличиваю указатель и удаляю его?

Я решал некоторые упражнения по программированию, когда понял, что у меня большое недоразумение в отношении указателей. Пожалуйста, кто-нибудь может объяснить причину, по которой этот код вызывает сбой на С++. #include <iostream> int main() {...
16 дек. '16 в 12:08
5

Когда и зачем использовать malloc?

Ну, я не могу понять, когда и зачем нужно выделять память с помощью malloc. Вот мой код: #include <stdlib.h> int main(int argc, const char *argv[]) { typedef struct { char *name; char *sex; int age; } student; //Now I c...
10 янв. '12 в 8:40
3

Malloc резервирует больше места, выделяя память?

Я наблюдаю следующее поведение в моей тестовой программе: Я делаю malloc() для 1 МБ и затем free() после sleep(10). Я делаю это пять раз. Я наблюдаю потребление памяти в top во время работы программы. После free() -d я ожидаю, что потребление вирт...
22 мар. '19 в 7:45
2

новый оператор для распределения памяти в куче

Я смотрел подпись нового оператора. Что есть: void* operator new (std::size_t size) throw (std::bad_alloc); Но когда мы используем этот оператор, мы никогда не используем приведение. то есть int *arr = new int; Итак, как С++ преобразует указат...
09 февр. '11 в 6:02
6

Идиома Pimpl без использования динамического распределения памяти

мы хотим использовать идиому pimpl для некоторых частей нашего проекта. Эти части проекта также являются частями, где динамическое распределение памяти запрещено, и это решение не находится под нашим контролем. Так что я спрашиваю, есть ли чистый и ...
07 февр. '11 в 13:38
4

Почему среда выполнения не может применить удаление или удаление [] вместо программиста?

Я читал, что нужен оператор delete[], потому что среда выполнения не сохраняет информацию о том, является ли выделенный блок массивом объектов, которым требуются вызовы деструктора или нет, но фактически хранит информацию о том, где в памяти является...
06 дек. '11 в 18:46
3

Зачем использовать _mm_malloc? (в отличие от _aligned_malloc, alligned_alloc или posix_memalign)

Существует несколько вариантов для получения выстроенного блока памяти, но они очень похожи, и проблема в основном сводится к тому, на каком языке стандарт и платформы вы ориентируетесь. С11 void * aligned_alloc (size_t alignment, size_t size) PO...
16 сент. '15 в 15:30
4

Динамическое распределение памяти для массивов указателей

Я пытаюсь написать программу, которая читает в последовательности строк из текстового файла и сохраняет их в массиве строк, динамически выделяя память для каждого элемента. Мой план состоял в том, чтобы хранить каждую строку в массиве с помощью указа...
28 сент. '13 в 15:40
5

Смешивание оператора new [] и размещение нового с обычным удалением []

Просто из любопытства, является ли законным? X* p = static_cast<X*>(operator new[](3 * sizeof(X))); new(p + 0) X(); new(p + 1) X(); new(p + 2) X(); delete[] p; // Am I allowed to use delete[] here? Or is it undefined behavior? Аналогично:...
27 июн. '11 в 16:02
3

Понять поведение нового обработчика

Я читаю "Эффективный С++ 55" Скотта Мейерса и задаю вопрос из пункта 49: Когда operator new не может выполнить запрос памяти, он вызывает new-handler, пока не найдет достаточно памяти. Хорошо спроектированная функция newhandler должна выполнить одн...
16 февр. '15 в 12:33