[英]C++ Using sizeof() to determine size of an Octree
假設Octree()
是一個具有 double 類型元素的容器。
我可以使用sizeof(Octree)
來確定我的八叉樹占用了多少字節 memory 嗎?
如果我更改八叉樹的分辨率/深度, Sizeof()
應該會更改 - 當我測試它時似乎並非如此。
有沒有辦法確定我的八叉樹動態分配的 memory 大小?
編號sizeof
返回 object 的大小。 這是object型號的大小。 在整個程序中保持不變。 sizeof
不返回 object 的成員函數動態分配的 memory 的數量,因此不能重載。
有沒有辦法確定我的八叉樹動態分配的 memory 大小?
當然。 您可以跟蹤您分配的所有動態 memory 以及它們的大小以獲得總數。 這不包括分配器本身使用的數據結構所消耗的開銷。 沒有標准的方法來衡量它。
正如其他人所說, sizeof
只為您提供單個節點的大小(以字節為單位)(不包括節點的任何成員字段指向的任何存儲)。
如果你想計算一棵樹的實際大小,你需要這樣的東西:
template <typename T>
std::size_t OctreeSize(const Octree<T> &tree_root_node) {
std::size_t tree_size = 0;
Visit(ref, [&tree_size] (const Octree<T> &node) {
tree_size += sizeof(node);
// If you have any dynamically-allocated object
// pointed to and owned by Octree<T>, add their size as well
});
return tree_size;
}
其中void Visit(const Octree<T> &, std::function<void(const Octree<T>&)>
是一個 function,它遍歷樹的每個節點並調用提供的 function。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.