Возврат массива, выделенного с помощью malloc, без использования возврата - PullRequest
0 голосов
/ 18 февраля 2019

Я пишу функцию, которая возвращает массив.В этой функции я хочу выполнить некоторые вычисления, чтобы получить целое число, равное размеру массива, которому я хочу выделить память.Поэтому в функции я использую malloc для выделения массива с определенным размером и возвращаю этот массив с именем returnArray.

Однако что произойдет, если я вызову функцию без использования return?Будет ли выделенная память по-прежнему выделяться?Это очень плохая проблема?Я подозреваю, что утечка памяти, но я не совсем уверен.

char * findValueAndCreateArray() {
int value = 0;

while(something, something..) {
value++;
}

char * returnArray = (char*) malloc(sizeof(char) * value);

return returnArray;

}

findValueAndCreateArray;

Заранее спасибо!

1 Ответ

0 голосов
/ 18 февраля 2019

Да, это приведет к утечке памяти.Когда вы возвращаете что-то из функции в C, вы просто копируете значение.Поэтому, когда вы делаете malloc(), вы ловите адрес вашей выделенной памяти, но это место будет выделяться до конца вашей программы или free(returnArray);

А также, вы должны использовать size_t переменная, когда вы выделяете пространство с malloc.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...