小编Ale*_*cio的帖子

operator new的任何实现都会返回指向零大小数组的保护页面的指针吗?

相关:C++ new int [0] - 它会分配内存吗?

该标准在5.3.4/7中说:

当direct-new-declarator中的表达式的值为零时,将调用分配函数以分配不带元素的数组.

......并且,在3.7.3.1/2中:

取消引用作为零大小请求返回的指针的效果是未定义的.

...但是,指针不能是空指针.

由于实际解除引用指针是未定义的行为,是否有任何实现返回指向保护页面的指针?我想这很容易,并且有助于检测错误/提高安全性.

c++ new-operator

8
推荐指数
1
解决办法
290
查看次数

如何在编译时确认自动推理类型的假设?(即static_assert样式

偶尔,我会将函数的返回值赋给auto类型的变量(例如auto returnValue = someFunction();),但希望澄清/强制执行关于该变量类型的某些假设 - 即它是类型的int.

虽然Concepts&type_traits提供了一些非常强大的静态假设验证功能,但它们不支持这样的内容:

static_assert( isType( returnValue, int ) );
//OR
static_assert( int == typeof( returnValue ) );
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c++ static-assert compile-time c++11

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

`if(__some_bool__!= NULL)`的表现如何?

当我遇到一些看起来像这样的代码时,我正在重构一些代码:

if( __some_bool__ != NULL ) {
    .....do something......
    }
Run Code Online (Sandbox Code Playgroud)

哪里__some_bool__bool.我不是说了BOOL那是typedef在Windows头文件"d.

这绝对不是(编写本文的程序员)的意图.但是,在实际修复它之前,我想确保我没有破坏任何东西.

这将如何评估?不false== NULL?发生了什么样的胁迫?

c++ visual-c++ comparison-operators conditional-statements

0
推荐指数
1
解决办法
55
查看次数