malloc- все статьи тега
При каких обстоятельствах Мэллок может вернуть NULL?
Со мной такого никогда не случалось, и я программирую уже много лет. Может ли кто-нибудь привести мне пример нетривиальной программы, в которой malloc фактически не будет работать? я не говорю об исчерпании памяти : я ищу простой случай, когда вы выделяете только один блок памяти в ограниченном размере, заданном пользователем, скажем целое число, вызывает сбой malloc. ...
C++ STL с jemalloc
Как можно использовать контейнеры STL C++ с jemalloc (или любой другой реализацией malloc)? Так ли это просто, как включить jemalloc/jemalloc.h? Или я должен написать распределитель для них? Edit : приложение, над которым я работаю, выделяет и освобождает относительно небольшие объекты в течение всего срока службы. Я хочу заменить распределитель по умолчанию, потому что тесты показали, что приложение не масштабируется дальше 2 ядер. Профилирование показало, что он ждал выделения памяти, вот и ...
Заставить malloc () возвращать NULL вместо сбоя программы?
Я выделяю память в программе на языке Си с помощью malloc. Это возможно для моей программы выделить больше памяти, чем система имеет место для, и в этот момент программа аварийно завершает работу. Для моих целей было бы лучше, если бы malloc просто вернул NULL (как это, по-видимому, предполагается), так что я могу поймать ошибку. Вместо этого он выдает ошибку, говорящую: "нет памяти, доступной для программы сейчас: небезопасно вызывать malloc.- И программа выходит из строя. Как я могу исправит ...
Что на самом деле происходит, когда вы не освобождаетесь после Мэллока?
Это было то, что беспокоило меня уже целую вечность. мы все учили в школе (по крайней мере, мне), что вы должны освободить каждый указатель, который выделяется. Мне немного любопытно, однако, о реальной стоимости не освобождения памяти. В некоторых очевидных случаях, например, когда malloc вызывается внутри цикла или части выполнения потока, очень важно освободить, чтобы не было утечек памяти. Но рассмотрим следующие два примера: во-первых, если у меня есть код это что-то вроде этого: int ...
Почему malloc + memset медленнее, чем calloc?
известно, что calloc отличается от malloc в том, что он инициализирует память, выделенную. С calloc память обнуляется. С malloc память не очищается. так что в повседневной работе я считаю calloc как malloc+memset. Кстати, для удовольствия я написал следующий код для бенчмарка. результат сбивает с толку. код 1: #include<stdio.h> #include<stdlib.h> #define BLOCK_SIZE 1024*1024*256 int main() { int i=0; char *buf[10]; while(i<10) { ...
Установка переменной в null после освобождения
в моей компании есть правило кодирования, которое говорит, что после освобождения любой памяти сбросьте переменную в NULL. Например... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Я чувствую, что в случаях, подобных приведенному выше коду, установка значения NULL не имеет никакого значения. Или я что-то упустил? если нет смысла в таких случаях, я собираюсь взять его с "командой", чтобы удалить это правило кодирования. Пожалуй ...
Почему я получаю ошибку утверждения c malloc?
я реализую полиномиальный алгоритм разделения и завоевания, поэтому я могу сравнить его с реализацией OpenCL, но я не могу получить malloc на работу. Когда я запускаю программу, она выделяет кучу вещей, проверяет некоторые вещи, а затем отправляет size/2 алгоритму. Затем, когда я ударил malloc строка снова выплевывает это: Танос.c: 3096: sYSMALLOc: Assertion `(old_top = = ((mbinptr) (((char *) &((av) - >bins[((1) - 1) * 2])) - __builtin_offsetof (struct malloc_chunk, ФД)))) && ...