小编joe*_*ney的帖子

对于任意Foo,"x = new(Foo)"与"x = new Foo"相同吗?

我正在查看一些遗留代码并遇到x=new(Foo);(请注意所提供类型的括号).我测试了变化,看起来和它一样x=new Foo;

Foo是非POD数据结构.一些外部内存泄漏程序正在标记该行 - 它为CORBA输出参数分配内存,因此调用者应该负责删除,但这是一个单独的问题,有许多间接层.

我的分析是否正确,是否可以接受?

c++ syntax new-operator

8
推荐指数
2
解决办法
186
查看次数

为什么对memset使用'\ 0'而不是0?

根据此Unix文档http://pubs.opengroup.org/onlinepubs/009695399/functions/bzero.html

The memset() function is preferred over bzero().

For maximum portability, it is recommended to replace 
the function call to bzero() as follows:

#define bzero(b,len) (memset((b), '\0', (len)), (void) 0)
Run Code Online (Sandbox Code Playgroud)


但是void *memset(void *s, int c, size_t n);第二个arg是一个整数,所以为什么他们建议使用'\ 0'而不是0?memset()文档说:“ memset()函数应将c转换为无符号char)arg 复制到s所指向对象的前n个字节中的每个字节中。” 是更有效还是更明确?这里有最佳实践吗?

c c++

3
推荐指数
1
解决办法
5311
查看次数

标签 统计

c++ ×2

c ×1

new-operator ×1

syntax ×1