динамическое выделение памяти с использованием стека, а не кучи в C - PullRequest
0 голосов
/ 28 сентября 2019

Я написал небольшой код для динамического распределения объема памяти, необходимого для хранения полного ввода, но используя кучу с malloc и realloc

Есть ли способ, которым я могу сделать это, просто используя стек для храненияполный пользовательский ввод в память?

код:

#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[]){
    int c = 0;
    int buffer_length = 2;
    int buffer_pos = 0;
    char *buffer = (char *)malloc(buffer_length * sizeof(char));

    while(c != 10){
        c = getchar();

        if(buffer_pos >= buffer_length - 1){
            buffer_length += 2;
            buffer = realloc(buffer, buffer_length * sizeof(char));
        }

        buffer[buffer_pos] = c;
        buffer_pos++;
    }

    printf("%s",buffer);

    free(buffer);
    main(0,NULL);

}

1 Ответ

0 голосов
/ 28 сентября 2019

Нет, это невозможно в стеке.

Вы можете использовать массив переменной длины для выделения локального массива, размер которого определяется выражением.Но как только он выделен, вы не можете изменить его размер.

Если вам нужно изменить размер массива, вы должны использовать динамическое выделение с malloc() и realloc().

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