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

Функция malloc выполняет динамическое выделение памяти в C и является частью стандартной библиотеки. Используйте этот тег, чтобы задать вопросы об использовании, поведении и реализации malloc.

28
Я использую результат malloc?
В этом вопросе кто-то предложил в комментарии, что я не должен приводить результат malloc, т.е. int *sieve = malloc(sizeof(int) * length); скорее, чем: int *sieve = (int *) malloc(sizeof(int) * length); Почему это так?
2409 c  malloc  casting 

13
Разница между malloc и calloc?
В чем разница между выполнением: ptr = (char **) malloc (MAXELEMS * sizeof(char *)); или: ptr = (char **) calloc (MAXELEMS, sizeof(char*)); Когда стоит использовать calloc вместо malloc или наоборот?
780 c  malloc  calloc 

17
Что ДЕЙСТВИТЕЛЬНО происходит, когда вы не освобождаетесь после malloc?
Это было то, что беспокоило меня целую вечность. Нас всех учат в школе (по крайней мере, так было), что вы ДОЛЖНЫ освободить каждый указатель, который выделен. Мне немного любопытно, однако, о реальной стоимости не освобождения памяти. В некоторых очевидных случаях, например, когда mallocвызывается внутри цикла или части выполнения потока, очень …
538 c  malloc  free 

19
В каких случаях я использую malloc и / или new?
Я вижу, что в C ++ существует несколько способов выделения и освобождения данных, и я понимаю, что при вызове mallocвы должны вызывать, freeа когда вы используете newоператор, вы должны deleteвыполнять сопряжение, и смешивать их два - ошибка (например, вызов free()чего-то, что было создано с newоператором), но я не знаю, когда …

25
Почему использование alloca () не считается хорошей практикой?
alloca()выделяет память в стеке, а не в куче, как в случае malloc(). Итак, когда я возвращаюсь из рутины, память освобождается. На самом деле это решает мою проблему освобождения динамически выделяемой памяти. Освобождение памяти, выделенной через malloc()это, является большой головной болью и, если что-то пропущено, приводит к всевозможным проблемам с памятью. …
401 c  stack  malloc  allocation  alloca 

13
Как работают malloc () и free ()?
Я хочу знать, как mallocи freeработать. int main() { unsigned char *p = (unsigned char*)malloc(4*sizeof(unsigned char)); memset(p,0,4); strcpy((char*)p,"abcdabcd"); // **deliberately storing 8bytes** cout << p; free(p); // Obvious Crash, but I need how it works and why crash. cout << p; return 0; } Я был бы очень признателен, если …

3
Почему malloc + memset медленнее, чем calloc?
Известно, что callocон отличается от mallocтого, что инициализирует выделенную память. С callocпомощью памяти устанавливается на ноль. С mallocпамятью не очищается. Таким образом , в повседневной работе, я считаю , callocкак malloc+ memset. Кстати, ради интереса я написал следующий код для теста. Результат сбивает с толку. Код 1: #include<stdio.h> #include<stdlib.h> #define …
256 c  malloc 


1
Почему в книге «Язык программирования C» написано, что я должен вызывать malloc?
Сегодня я достиг страницы 167 языка программирования Си (второе издание Брайан В. Керниган и Деннис М. Ричи) и обнаружил, что автор говорит, что я должен сыграть malloc. Вот часть из книги: 7.8.5 Управление хранением Функции malloc и calloc динамически получают блоки памяти. void *malloc(size_t n) возвращает указатель на n байтов …

23
Установка переменной в NULL после освобождения
В моей компании есть правило кодирования, которое гласит, что после освобождения памяти сбросьте переменную в NULL. Например ... void some_func () { int *nPtr; nPtr = malloc (100); free (nPtr); nPtr = NULL; return; } Я чувствую, что в случаях, подобных приведенному выше коду, установка значения NULLне имеет никакого значения. …

5
Несовместимое неявное объявление встроенной функции 'malloc'
Я получаю эту ошибку: предупреждение: несовместимое неявное объявление встроенной функции 'malloc' Я пытаюсь сделать это: fileinfo_list* tempList = malloc(sizeof(fileinfo_list)); Просто для справки используемая структура: typedef struct { fileinfo** filedata; size_t nFiles; size_t size; size_t fileblock; } fileinfo_list; Я не вижу ничего плохого в том, что я сделал. Я просто создаю …
155 c  struct  malloc 

17
В чем смысл malloc (0)?
Я только что увидел этот код: artist = (char *) malloc(0); ... и мне было интересно, зачем это делать?
121 c  malloc 


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

8
Malloc vs new - разные обивки
Я просматриваю чужой код C ++ для нашего проекта, который использует MPI для высокопроизводительных вычислений (10 ^ 5 - 10 ^ 6 ядер). Код предназначен для обеспечения связи между (потенциально) разными машинами на разных архитектурах. Он написал комментарий, в котором говорится примерно следующее: Обычно мы использовали бы newи delete, но …

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.