【发布时间】:2019-06-21 17:00:51
【问题描述】:
当我不打开文件(180mb)时,我没有收到任何错误,但是当我打开文件时,我收到分段错误 11。我相当确定我超出了进程的内存。有人有什么建议吗?
我更改了参数。因此,如果 NUM_TRAIN = 10 而不是 60000,则不会出现分段错误。当 NUM_TRAIN = 60000,但我没有打开文件时,我也没有遇到分段错误。当 NUM_TRAIN = 60000 并打开文件时,出现分段错误。
#include <stdio.h>
#define NUM_TRAIN 60000
#define IMAGE_SIZE 784
#define TRAIN_IMAGES "mnist_train.csv"
int main()
{
int arr[NUM_TRAIN][IMAGE_SIZE];
int arr2[NUM_TRAIN];
FILE* fTrain = fopen(TRAIN_IMAGES, "r");
return 0;
}
我不希望出现分段错误,但我确实遇到了,特别是分段错误 11
【问题讨论】:
-
使用 malloc 在堆而不是堆栈上分配数组。或者,在main()之外定义数组,将其放入全局内存区域。
标签: c file memory memory-management