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


目录
相关文章
|
13天前
|
存储 程序员 编译器
简述 C、C++程序编译的内存分配情况
在C和C++程序编译过程中,内存被划分为几个区域进行分配:代码区存储常量和执行指令;全局/静态变量区存放全局变量及静态变量;栈区管理函数参数、局部变量等;堆区则用于动态分配内存,由程序员控制释放,共同支撑着程序运行时的数据存储与处理需求。
58 21
|
2天前
|
程序员 C++ 容器
在 C++中,realloc 函数返回 NULL 时,需要手动释放原来的内存吗?
在 C++ 中,当 realloc 函数返回 NULL 时,表示内存重新分配失败,但原内存块仍然有效,因此需要手动释放原来的内存,以避免内存泄漏。
|
6天前
|
算法 C++
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
2022年第十三届蓝桥杯大赛C/C++语言B组省赛题解
12 5
|
5天前
|
存储 C语言 C++
【C++打怪之路Lv6】-- 内存管理
【C++打怪之路Lv6】-- 内存管理
23 0
【C++打怪之路Lv6】-- 内存管理
|
15天前
|
存储 C语言 C++
【C/C++内存管理】——我与C++的不解之缘(六)
【C/C++内存管理】——我与C++的不解之缘(六)
|
17天前
|
程序员 C语言 C++
C++入门5——C/C++动态内存管理(new与delete)
C++入门5——C/C++动态内存管理(new与delete)
48 1
|
10天前
|
C++
C/C++内存管理(下)
C/C++内存管理(下)
24 0
|
10天前
|
存储 Linux C语言
C/C++内存管理(上)
C/C++内存管理(上)
29 0
|
11天前
|
存储 编译器 C语言
深入计算机语言之C++:类与对象(上)
深入计算机语言之C++:类与对象(上)
|
11天前
|
存储 分布式计算 编译器
深入计算机语言之C++:C到C++的过度-2
深入计算机语言之C++:C到C++的过度-2