关于QT中memset函数

oathupdate 2015-04-12 05:57:55
我定义了这样一个结构体
struct FileInf
{
char name[256]; //文件名
char mode[20]; //文件属性
time_t date; //文件修改日期
long long size; //文件大小,大小为字节数
};
然后用了1024个结构体对象 FileInf file[1024];
用memset函数初始化 memset(file, 0, sizeof(FileInf)*1024);
然后调试,查看只有113个对象被初始化为0,其他的都没有。并且如果再次调用memset操作其它的数据就会报内存错误
...全文
2656 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
oathupdate 2015-04-13
  • 打赏
  • 举报
回复
引用 3 楼 wangzuxi 的回复:
memset(file, 0, sizeof(FileInf)*1024); 这么写也对,但建议这么写memset(file, 0, sizeof(file)); file变量总共占292K内存,如果是栈上分配的话,估计是超了,Linux下栈大小一般是8K。 建议用malloc在堆上分配内存。
谢谢 试了一下 确实超了
oathupdate 2015-04-13
  • 打赏
  • 举报
回复
引用 3 楼 wangzuxi 的回复:
memset(file, 0, sizeof(FileInf)*1024); 这么写也对,但建议这么写memset(file, 0, sizeof(file)); file变量总共占292K内存,如果是栈上分配的话,估计是超了,Linux下栈大小一般是8K。 建议用malloc在堆上分配内存。
谢谢了明白了,原来是这样。确实是在栈上。今天又上了一课
zuxi 2015-04-12
  • 打赏
  • 举报
回复
memset(file, 0, sizeof(FileInf)*1024); 这么写也对,但建议这么写memset(file, 0, sizeof(file)); file变量总共占292K内存,如果是栈上分配的话,估计是超了,Linux下栈大小一般是8K。 建议用malloc在堆上分配内存。
zhxianbin 2015-04-12
  • 打赏
  • 举报
回复
FileInf file[1024] 位于栈上吗?用 ulimit -s 看看栈的大小,有没有超过
oathupdate 2015-04-12
  • 打赏
  • 举报
回复
顶 up you人吗

23,217

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧