c/c++中memset的问题 以及memset和sizeof的关系

今天在写hduoj-2062 号题目的时候参照了https://blog.csdn.net/wyg1997/article/details/51223475(纯0-1背包问题)的方法,我自己写完,测试完成(数据量比较小)之后,就提交了,结果WA。

自己对比原博主的逻辑之后,觉得的逻辑没有任何问题,代码也 没有问题,然后cp了下博主的代码提交了,结果AC了。

然后我仔细对比了我自己写的和原博主写的代码,慢慢在修改可能有导致错误的地方,结果每一次都是WA, 慢慢的我快要抓狂了。

 最后看到了memset()函数这个地方, 在每进行一个测试用例的时候都需要将保存结果的数组进行初始化。第三个参数是要进行初始化的内存的大小,我直接写的数字(即开的数组的大小-1111),而原博主使用的sizeof函数,我抱着试试的心态对这个地方进行了改动,结果AC了, 然后我输出了小sizeof(dp)的值,结果是4444。

看到这里想必大家已经明白了,memset函数中是以字节为单位重置内存的。

所以同学们以后再使用memset()函数时要注意了 。不要随便填写数组的大小,尽量使用sizeof()函数来进行计算。

你可能感兴趣的:(算法)