Advertisement

C++面向对象:堆空间

阅读量:

C++面向对象(六):堆空间

为实现对内存生命周期及容量的灵活管理,通常会借助堆空间进行内存分配。

堆空间的申请与释放

  1. malloc \ free (继承自C语言的传统方式)
  2. new \ delete (C++语言新增的机制)
  3. new[ ] \ delete[ ]

注意事项

  • 在成功申请堆空间后,系统将返回对应内存区域的地址。
  • 堆内存不会被系统自动回收,必须由用户手动进行释放操作。因此,申请与释放之间需保持一一对应的关系,否则可能导致内存泄漏问题。
  • 在释放过程中,所回收的内存大小将严格对应于之前申请的数量。
  • 在某些情况下,堆空间的申请可能会失败。例如当请求分配的空间过大时,系统可能无法满足需求。此时部分平台会抛出异常信息,而另一些平台则可能返回一个空指针作为响应。

malloc \ free 示例:

复制代码
    void test() {
    		// 向操作系统申请4个字节的空间,会返回这一段内存空间的首地址(4个字节中第一个的地址)
    	// 这里作为int使用,返回的是void类型,所以强转成 int
    	int *p = (int *)malloc(4);
    	*p = 65;
    	cout << *p

全部评论 (0)

还没有任何评论哟~