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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Как динамически распределять память с помощью сборок и системных вызовов под Linux

Я ищу хорошие примеры кода для распределения динамической памяти с использованием языка ассемблера под Linux и использования системных вызовов, а не malloc и друзей. Каковы некоторые из простейших, но эффективных способов сделать это? На компьютера...
задан 06 мая '10 в 17:54
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 в 19:02
4
ответов

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

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

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

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