如何检查c ++中是否存在bool

时间:2018-02-01 22:54:48

标签: c++ c++11 memory-management

我使用

在内存中创建了一个bool
 bool *SomeBool = new bool;

然后如何在内存中检查它是否存在,因为(据我所知)

if (!SomeBool)
    //Do stuff
如果bool默认设置为false,则

无法正常工作。 那我怎么检查它是否存在呢?

3 个答案:

答案 0 :(得分:2)

如果要检查值,则需要取消引用指针,如下所示:(*SomeBool)

if(*SomeBool) { // true }

if(!*SomeBool) { // false }

分配一些值相同:

*SomeBool = true; // value is now true!

答案 1 :(得分:2)

你完成调用bool时,你创建的new ...存在于内存中,并且不会抛出任何异常。

但是,if(!SomeBool)会检查bool地址是否为0,如果内存分配成功,则永远不会为真。要改为访问bool,您必须先取消引用指针:

if(!(*SomeBool)) //Do stuff

答案 2 :(得分:1)

我想补充一点。即使您的问题已得到解决。

例如:

sizeof(bool) // size = 1 byte
sizeof(bool *) // size = 4 byte or 8 byte - depending on the architecture 32-bit or 64-bit

因此,基本上你大致使用5(4 + 1)字节或9(8 + 1)字节。我不知道你的实际情况。但是,应该通过重新思考我们的设计和实现来避免这种情况。如果您要为资源稀缺的小型设备进行编程,那就更重要了。