如题,在调试一个文件选择函数时,如果某个文件过多的文件夹选择文件时返回结果(路径与文件名字符串)会出错,而文件少的文件夹就没错。
仔细查看代码发现在文件选择函数内部定义了
FILEINFO fi[32];
而文件过多的文件夹有100多个文件。我只能浏览到第59个。
于是想到改为
FILEINFO fi[200];
运行结果还是出错。
为什么呢?
看了一下FILEINFO
typedef struct {
FSIZE_t fsize; /* File size */
WORD fdate; /* Modified date */
WORD ftime; /* Modified time */
BYTE fattrib; /* File attribute */
#if _USE_LFN != 0
TCHAR altname[13]; /* Altenative file name */
TCHAR fname[_MAX_LFN + 1]; /* Primary file name */
#else
TCHAR fname[13]; /* File name */
#endif
} FILINFO;
每个FILEINFO结构体占用280左右字节,因为我采用了LFN,而MAX_LFN=256
280*200》预定义的栈大小,导致程序出错。
最后把FILEINFO fi[200];定义为全局变量,问题解决了。