Advertisement

C++堆内存分配

阅读量:

C++堆内存分配机制

  • C语言堆内存分配
    • 抽象化与层级划分

      • 扩展可用堆内存的方法
    • brk与sbrk系统调用

      • 保持可用堆内存的维护方式
    • operator new运算符

抽象与分层

C语言与C++的内存服务模型在某种程度上与计算机网络中的协议分层模型存在相似之处。计算机网络协议通常被划分为五个层级,依次为应用层、传输层、网络层、数据链路层以及物理层。在这一结构中,上层仅需依赖下层所提供的服务进行自身功能的构建,而无需深入了解更下一层的服务内容。例如,在HTTP应用中,其功能实现只需关注传输层TCP所提供的服务,而无需涉及网络层所能提供的具体服务。

回到内存分配的问题上,实际上应用程序在内存管理方面也具备明确的层级结构。当应用程序需要获取内存资源时,它会向C++标准库发起请求。因此,应用程序只需了解C++标准库能够为其提供内存配置的功能即可。C++中的new运算符具备虚拟内存分配的能力,这一点对于C++程序员而言是众所周知的。经过编译器处理后,new运算符会被展开,并进一步调用C++标准库中定义的全局operator new(std::sizt_t)函数以完成内存申请的操作。

当你编写如下代码:

复制代码
    Foo* p = new Foo();

全部评论 (0)

还没有任何评论哟~