Запитання з тегом «malloc»

Функція malloc виконує динамічне розподілення пам'яті в C і входить до стандартної бібліотеки. Використовуйте цей тег для запитань щодо використання, поведінки та реалізації malloc.

28
Я кидаю результат малок?
У цьому питанні хтось запропонував у коментарі, що я не повинен наводити результат malloc, тобто int *sieve = malloc(sizeof(int) * length); а не: int *sieve = (int *) malloc(sizeof(int) * length); Чому це було б так?
2406 c  malloc  casting 

13
Різниця між malloc і calloc?
Яка різниця між тим, що робити: ptr = (char **) malloc (MAXELEMS * sizeof(char *)); або: ptr = (char **) calloc (MAXELEMS, sizeof(char*)); Коли корисно використовувати calloc over malloc чи навпаки?
779 c  malloc  calloc 

17
Що дійсно трапляється, коли ти не звільняєшся після молотка?
Це було щось, що хвилює мене вже віками. У нас усіх навчають у школі (принаймні, я був), що Ви ОБОВ'ЯЗКОВО звільняєте кожен покажчик, який виділяється. Мені дещо цікаво, що стосується реальної вартості не звільнення пам'яті. У деяких очевидних випадках, наприклад, коли mallocвикликається всередині циклу або частина виконання потоку, дуже важливо …
538 c  malloc  free 

19
У яких випадках я використовую malloc та / або new?
Я бачу, що в C ++ є кілька способів розподілу та вільних даних, і я розумію, що коли ви телефонуєте, mallocвам слід зателефонувати, freeі коли ви використовуєте newоператора, ви повинні з'єднатися з ними, deleteі це помилка змішати два (наприклад, дзвінок free()на щось створене з newоператором), але мені не зрозуміло, коли …

25
Чому використання аллока () не вважається хорошою практикою?
alloca()виділяє пам'ять на стек, а не на купу, як у випадку malloc(). Отже, коли я повертаюся з розпорядку, пам'ять звільняється. Отже, насправді це вирішує мою проблему звільнення динамічно розподіленої пам'яті. Звільнення пам'яті, що виділяється, malloc()є головним болем, і якщо якимось чином пропущене, призводить до всіляких проблем з пам'яттю. Чому використання …
400 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 BLOCK_SIZE …
256 c  malloc 


1
Чому в книзі "Мова програмування на С" йдеться про те, що я повинен відкинути малок?
Сьогодні я досяг сторінки 167 з Мова програмування C (друге видання Брайан У. Керніган & Dennis M. Ritchie) і виявив , що автор говорить , що я повинен кинути malloc. Ось частина книги: 7.8.5 Управління зберіганням Функції malloc і calloc динамічно отримують блоки пам'яті. void *malloc(size_t 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
Який сенс малок (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.