Max*_*hon 5 c++ memory valgrind stdvector c++11
在C++代码的开头,我初始化一个1000000(百万)bool类型数据的向量.但是,在valgrind中,最大堆+堆栈使用量显示为200Kb.鉴于Bool是1字节,不应该是1 Mb?
有没有我没有意识到的优化?或者我错过了什么?
谢谢你的提前.
我使用的是Ubuntu64 16.04系统.编译没有-O参数的代码.
编辑:代码可以简化为此,
vector<bool> * isPrime;
int main(){
isPrime = new vector<bool>(1000000, true);
}
Run Code Online (Sandbox Code Playgroud)
编辑2:似乎有一个我没有意识到的优化(在评论中说明).谢谢.
小智 0
不带-O参数编译代码就等于-O0,并且-O0并不意味着没有优化。您可以在https://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.html中查看 gcc 优化的定义
在这种情况下,大小与-Os相同,如果使用-O1或更高,编译器不使用位向量,也就是说每个bool变量占用1个字节;否则编译器选择位向量(http://www.cplusplus.com/reference/vector/vector-bool/)
| 归档时间: |
|
| 查看次数: |
129 次 |
| 最近记录: |