
代码中的错误行是
memset(grID_,sizeof(int) * x_quadrants * y_quadrants);
整个功能是这样的:
Ocean::Ocean(int num_boats,int x_quadrants,int y_quadrants){ grID_ = new int[x_quadrants * y_quadrants]; memset(grID_,sizeof(int) * x_quadrants * y_quadrants); x_quadrants_ = x_quadrants; y_quadrants_ = y_quadrants; boats_ = new Boat[num_boats]; num_boats_ = num_boats; stats_.hits = 0; stats_.misses = 0; stats_.duplicates = 0; stats_.sunk = 0;} 我正在使用memset所以当使用不同的驱动程序进行测试时,我不会得到垃圾值输出.没有必要为clang提供命令行,因为我不允许更改它.
解决方法 更换grID_ = new int[x_quadrants * y_quadrants];memset(grID_,sizeof(int) * x_quadrants * y_quadrants);
只是
grID_ = new int[x_quadrants * y_quadrants]();
注意括号,它告诉编译器你想要这个零初始化(或者真正的值初始化,这里减少为零初始化).
更好的是,使用std :: vector代替这种危险的DIY方案.
总结以上是内存溢出为你收集整理的c – 隐式转换将signedness’int’更改为’unsigned int’全部内容,希望文章能够帮你解决c – 隐式转换将signedness’int’更改为’unsigned int’所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)