Tom*_*Lan 5 c++ memset implicit-conversion
我使用clang ++来编译程序,我需要在clang ++中编译它而没有错误.我没有得到其他编译器的错误.
代码中的错误行是
memset(grid_, 0, sizeof(int) * x_quadrants * y_quadrants);
Run Code Online (Sandbox Code Playgroud)
整个功能是这样的:
Ocean::Ocean(int num_boats, int x_quadrants, int y_quadrants)
{
grid_ = new int[x_quadrants * y_quadrants];
memset(grid_, 0, 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;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用memset所以当使用不同的驱动程序进行测试时,我不会得到垃圾值输出.没有必要为clang提供命令行,因为我不允许更改它.
更换
grid_ = new int[x_quadrants * y_quadrants];
memset(grid_, 0, sizeof(int) * x_quadrants * y_quadrants);
Run Code Online (Sandbox Code Playgroud)
只是
grid_ = new int[x_quadrants * y_quadrants]();
Run Code Online (Sandbox Code Playgroud)
注意括号,它告诉编译器你想要这个零初始化(或者真正的值初始化,这里减少为零初始化).
更好的是,使用一个std::vector而不是这个危险的DIY方案.
| 归档时间: |
|
| 查看次数: |
11018 次 |
| 最近记录: |