【发布时间】:2023-03-21 11:04:01
【问题描述】:
我编写了一个小代码来动态分配存储完整输入所需的内存大小,但使用带有 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);
}
【问题讨论】:
-
你乘错了大小,应该是
sizeof(char)。 -
为什么?我正在使用 char* 缓冲区,而不是 char 缓冲区
-
char *是指向字符数组的指针,而不是指向字符指针的指针。
标签: c