我有一个大约100 MB的文件,需要处理。
获得该文件的尺寸(h& w)后,我应该将数据读入数组。我正在考虑如何做到这几点:
1。静态(自动)
int matrix[h][w];
2。动态
// similar to above, but using malloc
我担心限制(并释放内存)。
此外,如果静态数组的范围结束,是否会释放它?
答案 0 :(得分:0)
在我的情况下,解决方案是使用动态分配。
似乎int matrix[h][w];
将数据放入堆栈,这是有限的(小),而使用malloc()
将数据放入堆中,这大到75%的虚拟内存(在Linux中)
答案 1 :(得分:0)
这取决于应用程序,但大多数时候一个好的方法是将文件映射到内存。在现代操作系统上,这将返回指向文件内容的指针,并使硬盘驱动器上的文件像交换文件一样工作:应用程序只会将其内容视为内存,但操作系统只会将页面加载到内存中(它希望你访问它们。如果您只需要阅读文件的一小部分,这可以为您节省大量时间和复杂性。
这是the glib
library does file I/O的方式,或者它可以通过Unix / Linux上的hls_segment_size=500000
以及Windows API中的一组不同功能获得。