python做的大型网站/如何提高百度搜索排名
C++内存分配追踪
内存分配堆性能的影响是很大的,有时候我们需要精确的知道内存分配发生在哪里!
有很多工具可以帮助我们定位内存分配的位置。但我们也可以自己手写代码来追踪内存分配。
下面是这部分代码 (注意,这部分代码可以直接拿到自己的项目中,插入使用即可)
需要重写new和delete方法。
// 追踪内存分配
struct AllocationMetrics{int allocatedSize = 0;int FreedSize = 0;int getMemoryUsage() {return allocatedSize - FreedSize;}void printMemoryUsage() {std::cout << getMemoryUsage() << std::endl;}
};
static AllocationMetrics am;
void* operator new(size_t size)
{am.allocatedSize += size;return malloc(size);
}
void operator delete(void* memory, size_t size)
{am.FreedSize += size;free(memory);
}
这里是使用示例
class Object{int x, y, z;
};
int main(){am.printMemoryUsage();Object* obj = new(Object);am.printMemoryUsage();{std::unique_ptr<Object> uno = std::make_unique<Object>();am.printMemoryUsage();}am.printMemoryUsage();
}