C++语言之动态内存分配

简介:

在C语言中,我们熟悉的内存分配与释放的最常用的接口分别是malloc , free 。在C++中:

    存在着更加方便的动态存储分配:

1、new 和delete 机制,new 它能更可靠控制存储区的分配,C++ 用delete 释放new 运算符申请的存储区。
2、new 分配空间时, 如果是对象, 自动调用构造函数。
3、new [] 表示分配一个动态数组, 要跟delete [] 配合使用。

直接上代码:

#include <iostream>

using namespace std ; 

int main(void)
{
	//给指针变量a分配int类型大小的空间
	int *a = new  int ;   
	//给指针变量赋予200
	*a = 200 ; 
	//new [] 表示分配一个动态数组
	int *p = new int[10] ;  //注意,这里不只10块空间,而是4*10=40 。因为int型占4个字节

	int i ; 
	//遍历数组
	for(i = 0 ; i < 10 ; i++)
	{
		p[i] = i ; //给数组赋值
		cout << "p[" << i << "] : " << p[i] << endl ; 
	}


	cout << "*a : " << *a << endl ; 

	//释放空间  相当于C语言中的free
	delete  a ; 

	//Ê释放空间
	delete []  p ; 


	char *q = NULL ; 
		
	delete q ; 

	return 0 ; 
}

运行结果:

p[0] : 0

p[1] : 1

p[2] : 2

p[3] : 3

p[4] : 4

p[5] : 5

p[6] : 6

p[7] : 7

p[8] : 8

p[9] : 9

*a :200


目录
相关文章
|
1月前
|
编译器 Go
探索 Go 语言中的内存对齐:为什么结构体大小会有所不同?
在 Go 语言中,内存对齐是优化内存访问速度的重要概念。通过调整数据在内存中的位置,编译器确保不同类型的数据能够高效访问。本文通过示例代码展示了两个结构体 `A` 和 `B`,尽管字段相同但排列不同,导致内存占用分别为 40 字节和 48 字节。通过分析内存布局,解释了内存对齐的原因,并提供了优化结构体字段顺序的方法,以减少内存填充,提高性能。
42 3
|
1月前
|
存储 缓存 C语言
【c++】动态内存管理
本文介绍了C++中动态内存管理的新方式——`new`和`delete`操作符,详细探讨了它们的使用方法及与C语言中`malloc`/`free`的区别。文章首先回顾了C语言中的动态内存管理,接着通过代码实例展示了`new`和`delete`的基本用法,包括对内置类型和自定义类型的动态内存分配与释放。此外,文章还深入解析了`operator new`和`operator delete`的底层实现,以及定位new表达式的应用,最后总结了`malloc`/`free`与`new`/`delete`的主要差异。
53 3
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
108 4
|
1月前
|
Java 编译器 测试技术
go语言避免不必要的内存分配
【10月更文挑战第18天】
50 1
|
1月前
|
存储 算法 Java
Go语言的内存管理机制
【10月更文挑战第25天】Go语言的内存管理机制
35 2
|
2月前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
2月前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
55 5
|
2月前
|
存储 C语言 C++
【C++打怪之路Lv6】-- 内存管理
【C++打怪之路Lv6】-- 内存管理
55 0
【C++打怪之路Lv6】-- 内存管理
|
2月前
|
C++
C/C++内存管理(下)
C/C++内存管理(下)
54 0
|
2月前
|
存储 Linux C语言
C/C++内存管理(上)
C/C++内存管理(上)
43 0