繁体   English   中英

动态 memory 分配使用堆栈而不是 C 中的堆

[英]dynamic memory allocation using the stack not the heap in C

我编写了一个小代码来动态分配存储完整输入所需的 memory 大小,但是使用带有 malloc 和 realloc 的堆

有什么办法可以只使用堆栈将完整的用户输入存储在 memory 中吗?

编码:

#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);

}

不,这在堆栈中是不可能的。

您可以使用可变长度数组来分配大小来自表达式的本地数组。 但是一旦分配,您就无法更改大小。

如果需要调整数组大小,则必须使用malloc()realloc()的动态分配。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM