bool作为成员变量导致内存泄露

看到说将bool类型作为成员变量会导致内存泄露,原因是bool类型是1字节,为了字节对齐,会实际分配4字节,而在析构的时候其实只delete了1个字节,另外3个字节没有delete。

请问是这样的吗? 如果实验验证呢? 多谢!

阅读 2.7k
1 个回答

你说的前半句没问题,作为成员变量,可能有内存对齐导致分配的内存比实际用到的多;但是后半句不对,一定注意结构体对齐是看具体内存布局的,也就是说不是一定分配四个字节。而且释放某个结构体时候,用delete是作为一个整体操作,不会只释放那个bool的字节。就算一开始因为对齐导致多分配,释放时候也是同样多释放,不存在内存泄漏。
至于实验,你搜“结构体对齐”,有很多博客讲这个。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题