Date
Nov. 21st, 2024
 
2024年 10月 21日

Post: C++ Primer 006 : 动态内存

C++ Primer 006 : 动态内存

Published 12:05 May 22, 2013.

Created by @ezra. Categorized in #Programming, and tagged as #C/C++.

Source format: Markdown

Table of Content

本篇主要介绍C++ 中的动态内存。

在 C 语言中我们可以使用 malloccallocreallocfree 等进行动态内存操作,在 C++ 中,除了兼容 C 中的动态内存分配的方法之外,还提供了两个关键字 newdelete

使用new/delete 来分配指定类型变量的内存:

int* p = new int;
//申请内存的时候进行初始化
int* p = new int(66);
//释放内存空间
delete p;
p = NULL;

申请指定类型数组大小的内存:

int* p = new int[5];
//申请数组大小的内存并初始化(C++11标准)
int* p = new int[5]{11,22,33,44,55};
//释放数组大小的内存
delete[] p;
p = NULL;

申请和释放 N 维数组大小的内存:

// 需要用一个 N-1 维数组指针去指向申请的内存
int (*p)[4] = new int[3][4];
delete[] p;
p = NULL;

// 需要c++11标准支持
int (*p)[2] = new int[2][2]{/**/{1,2} , {3,4}};
delete[] p;
p = NULL;

int (*p)[3][4] = new int[2][3][4];
delete[] p;
p = NULL;

定位分配:

new(指针) 类型(初始值)
//指针表示分配内存的起始地址
Pinned Message
HOTODOGO
The Founder and CEO of Infeca Technology.
Developer, Designer, Blogger.
Big fan of Apple, Love of colour.
Feel free to contact me.
反曲点科技创始人和首席执行官。
开发、设计与写作皆为所长。
热爱苹果、钟情色彩。
随时恭候 垂询