大家好.我正在为我的工作修复旧代码.它目前用C++编写.他们将静态分配转换为动态,但没有编辑memsets/memcmp/memcpy.这是我的第一次编程实习,因为我的类似于newbe的问题.
下面的代码在C中,但我希望在C++中使用它(我读过malloc在C++中不是很好的做法).我有两个场景:首先,我们创建了f.然后使用&f以填充零.第二个是指针*pf.我不确定如何将pf设置为全部0,就像前面的C++示例一样.
你可以pf = new foo代替malloc然后打电话memset(pf, 0, sizeof(foo))吗?
struct foo { ... } f;
memset( &f, 0, sizeof(f) );
//or
struct foo { ... } *pf;
pf = (struct foo*) malloc( sizeof(*pf) );
memset( pf, 0, sizeof(*pf) );
Run Code Online (Sandbox Code Playgroud)
是的,但前提是foo是POD.如果它有虚拟函数或远程C++ ish的任何其他东西,不要在它上面使用memset,因为它会遍及struct/class的内部.
您可能想要做的而不是memset是给foo一个构造函数来显式初始化它的成员.
如果要使用new,请不要忘记相应的删除.更好的是使用shared_ptr :)
| 归档时间: |
|
| 查看次数: |
6629 次 |
| 最近记录: |