刷OJ时,发现差不多的代码,室友的内存大约是我的一半。
经过详细的比对,发现问题出现在memset函数上面。
const int maxx=1010;
int a[maxx][maxx];
memset(a,0,sizeof(a));
结果如图
如果手写循环进行初始化的话:
const int maxx=1010;
int a[maxx][maxx];
for(int i=0;i<maxx;i++)
for(int j=0;j<maxx;j++)
a[i][j]=0;
(上面代码经过原代码的改写,但不会对测评结果有显著影响)
之前也遇到过由于用了memset而TLE的问题,现在看起来是真的存在这种问题。
百度了一下,看了好多人的博客,众说纷纭, 真相有待我进一步测试。
本文详细对比了使用memset函数和手写循环进行数组初始化的内存消耗差异,通过实例展示了memset可能导致的内存浪费问题,并提供了解决方案。结合搜索结果和实际测试,探讨了在刷OJ时避免内存泄露的有效方法。
612

被折叠的 条评论
为什么被折叠?



