我使用
在内存中创建了一个bool bool *SomeBool = new bool;
然后如何在内存中检查它是否存在,因为(据我所知)
if (!SomeBool)
//Do stuff
如果bool默认设置为false,则无法正常工作。 那我怎么检查它是否存在呢?
答案 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)字节。我不知道你的实际情况。但是,应该通过重新思考我们的设计和实现来避免这种情况。如果您要为资源稀缺的小型设备进行编程,那就更重要了。