memory-management- все статьи тега


При каких обстоятельствах Мэллок может вернуть NULL?

Со мной такого никогда не случалось, и я программирую уже много лет. Может ли кто-нибудь привести мне пример нетривиальной программы, в которой malloc фактически не будет работать? я не говорю об исчерпании памяти : я ищу простой случай, когда вы выделяете только один блок памяти в ограниченном размере, заданном пользователем, скажем целое число, вызывает сбой malloc. ...

автоматический ptr для массивов

Короче говоря, мне интересно, существует ли тип auto_ptr like для массивов. Я знаю, что могу свернуть свою собственную, я просто хочу убедиться, что там уже ничего нет. Я также знаю о векторах. однако я не думаю, что смогу ими воспользоваться. Я использую несколько API/SDK для Windows, таких как Windows Media SDK, Direct Show API, которые для того, чтобы вернуть некоторые структуры, вызывают функцию, которая принимает указатель и размер дважды. Первый раз передавая NULL в качестве указателя ...

C++ STL с jemalloc

Как можно использовать контейнеры STL C++ с jemalloc (или любой другой реализацией malloc)? Так ли это просто, как включить jemalloc/jemalloc.h? Или я должен написать распределитель для них? Edit : приложение, над которым я работаю, выделяет и освобождает относительно небольшие объекты в течение всего срока службы. Я хочу заменить распределитель по умолчанию, потому что тесты показали, что приложение не масштабируется дальше 2 ядер. Профилирование показало, что он ждал выделения памяти, вот и ...

ошибка c++ double free или corruption (out)

Я получаю ошибку "Double free или corruption (out)" после того, как я печатаю свой вывод. Но эта ошибка возникает только для небольших входов. Для больших входных данных программа не выдает эту ошибку. Когда я создаю многомерные массивы внутри main и удаляю их, я не получаю ошибку. Я опубликовал здесь только ту часть кода, которая имеет отношение к этому вопросу. Пожалуйста, объясните, как решить эту проблему. #include<iostream> #include<vector> using namespace std; class Knapsack{ ...

Как читать блоки данных из файла, а затем читать из этого блока в вектор?

Предположим, что у меня есть файл с записями X. Один "блок" содержит m записей. Общее количество блоков в файле n=x/m. если я знаю размер одной записи, скажем b байт (размер одного блока = b*m), я могу прочитать весь блок сразу, используя системную команду read () (есть ли какой-либо другой метод?). Теперь, как мне прочитать каждую запись из этого блока и поместить каждую запись как отдельный элемент в вектор. Причина, по которой я хочу сделать это в первую очередь, заключается в сокращении опе ...

PHP сокращение использования памяти при использовании fputcsv в php: / / output

Мы столкнулись с немного странной проблемой. Все происходит вот так. У нас есть большие объемы данных, которые мы должны вывести клиенту. Эти файлы данных не могут быть предварительно построены, они должны обслуживаться из живых данных. Моим предпочтительным решением было записать в CSV строку за строкой из выборки, подобной этой: while($datum = $data->fetch(PDO::FETCH_ASSOC)) { $size += fputcsv($outstream, $datum, chr(9), chr(0)); } Это обошло много нелепого использования ...

Выделение/освобождение памяти при работе с неуправляемыми C# и C++

Я работаю с некоторым неуправляемым кодом на C# и C++, и есть две вещи, которые я не понимаю, когда имею дело с памятью. Если кто-то может помочь мне понять: Если переменная динамически выделяется под C# (с помощью new) и затем передается в неуправляемый код C++. Должна ли эта переменная память быть освобождена вручную под неуправляемым кодом C++ пользователем ? Если переменная динамически выделяется под C++ неуправляемая (с помощью new) и затем передано в C#, можно ли с уверенностью сказа ...

Освобождение 3-мерного массива

Я создаю трехмерный массив, подобный этому: GLfloat ***tgrid; //other code in between here tgrid = new GLfloat**[nx]; for(int i = 0; i < nx; i++) { tgrid[i] = new GLfloat*[ny]; for(int j = 0; j < ny; j++) { tgrid[i][j] = new GLfloat[nz]; } } Означает ли это, что я должен освободить память следующим образом: for(int i = 0; i < nx; i++) { for(int j = 0; j < ny; j++) { delete [] tgrid[i][j]; } delete [] tgrid[i]; } delete [] tgrid; ...

Заставить malloc () возвращать NULL вместо сбоя программы?

Я выделяю память в программе на языке Си с помощью malloc. Это возможно для моей программы выделить больше памяти, чем система имеет место для, и в этот момент программа аварийно завершает работу. Для моих целей было бы лучше, если бы malloc просто вернул NULL (как это, по-видимому, предполагается), так что я могу поймать ошибку. Вместо этого он выдает ошибку, говорящую: "нет памяти, доступной для программы сейчас: небезопасно вызывать malloc.- И программа выходит из строя. Как я могу исправит ...

Выделяет ли c# ссылочные типы новую память при передаче методам?

Все... Я новичок в C# и подобных языках... Я прочитал две статьи скита, одну о куче/стеке, а другую о ссылочных типах и типах значений. И я предполагаю, что мой вопрос прост, но он не прояснен для меня после прочтения этих статей. Выделяют ли ссылочные типы новую память при передаче методам? Например, если я передаю форму методу, например void myMethod(System.Windows.Forms.Form myForm) { ... } Будет ли выделено больше памяти для хранения всех данных myForm или он будет содержать только ...

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

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

Как я могу обнаружить использование памяти моего приложения в Android?

Как я могу найти память, используемую в моем приложении для Android, программно? Я надеюсь, что есть способ сделать это. Кроме того, как я могу получить свободную память телефона тоже? ...

Каковы xms и Xmx значение параметров при запуске виртуальной машины? [дубликат]

этот вопрос уже есть ответ здесь: как определяется размер кучи Java по умолчанию? 7 ответов Пожалуйста, объясните использование Xms и Xmx параметры в JVMs. Какие значения по умолчанию для них? ...

Пиковое использование памяти процесса linux / unix

есть ли инструмент, который будет запускать командную строку и сообщать, сколько ОЗУ было использовано всего? Я представляю себе что-то аналогичное /usr/bin/time ...

В чем разница между new/delete и malloc/free?

В чем разница между new/delete и malloc/free? обзоры (дубликат?): В каких случаях я использую malloc vs new? ...

Как я могу явно освободить память в Python?

Я написал программу Python, которая действует на большой входной файл, чтобы создать несколько миллионов объектов, представляющих треугольники. Алгоритм такой: чтение входного файла обработайте файл и создайте список треугольников, представленных их вершинами вывод вершин в формате OFF: список вершин, за которым следует список треугольников. Треугольники представлены индексами в списке вершин в требование OFF, что я распечатываю полный список вершин, прежде чем я распечатаю треугольники, оз ...

В чем разница между слабой ссылкой и непризнанной ссылкой?

Свифт: Ссылок Слабые Ссылки Неизвестные Ссылки чем неназванная ссылка отличается от слабой ссылки? когда безопасно использовать ссылку без имени? являются ли неизвестные ссылки угрозой безопасности, например висячие указатели в C / C++? ...

C++ new int[0] - будет ли он выделять память?

простое тестовое приложение: cout << new int[0] << endl; выходы: 0x876c0b8 Так что, похоже, это работает. Что говорит об этом стандарт? Всегда ли законно "выделять" пустой блок памяти? ...

Убедительные примеры пользовательских распределителей C++?

какие действительно веские причины бросить std::allocator в пользу нестандартного решения? Вы сталкивались с какими-либо ситуациями, когда это было абсолютно необходимо для корректности, производительности, масштабируемости и т. д.? Есть действительно умные примеры? пользовательские распределители всегда были особенностью стандартной библиотеки, в которой у меня не было большой необходимости. Мне просто интересно, может ли кто-нибудь здесь на SO предоставить некоторые убедительные примеры, чтоб ...

Как инициализировать память оператор new в C++?

Я только начинаю в C++ и я хочу, чтобы забрать некоторые хорошие привычки. Если я только что выделил массив типа int с new оператор, как я могу инициализировать их все до 0, не перебирая их все сам? Я должен просто использовать memset? Есть ли" C++ " способ сделать это? ...