是否可以在C中使用较大的char缓冲区

use*_*521 5 c

我需要在内存中存储一​​个“大”文件(比如说不到2mb),我想知道是否可以使用

char buffer[2048000];
Run Code Online (Sandbox Code Playgroud)

有没有更好的方法来处理它?使用大型char数组是否有任何性能问题?

Bat*_*eba 6

是的,可能存在问题,如果该缓冲区是自动存储持续时间的变量,则大多数 C 实现将在堆栈上分配该缓冲区,并且可供使用的“堆栈内存”量可能非常小。

最好的办法是malloc用于大于几千字节的任何内容。只记得free在适当的时候打电话。

使其static成为另一种可能性或使其全球化可能会有所帮助。