美文网首页
C++ - 动态内存分配

C++ - 动态内存分配

作者: Mitchell | 来源:发表于2016-01-12 17:13 被阅读255次

有时候一个程序需要很大的内存,有时需要很小的空间,比较有效率的做法就是动态内存分配。


用 new 运算符实现动态内存分配

  • 第一种用法,分配一个变量:
    P = new T;
    T 是任意类型名,P 是类型为*** T * 的指针。
    动态分配出一片大小为 sizeof(T)字节的内存空间,并且将该内存空间的
    起始地址***赋值给 P。比如:
int * pn;
pn = new int;
*pn = 5;
  • 分配一个数组
    P = new T[N];
    T: 任意类型名
    P:可I型为 T* 的指针
    N:要分配的数组元素的个数,可以是整型表达式
    动态分配除一篇大小为 N*sizeof(T)字节的存储空间
int *pn;
int i = 5;
pn = new int[i*20];
pn[0] = 20;
pn[100] = 30;//编译没问题。运行时会导致数组越界
  • new 运算符返回值类型:
    new T;
    new T[n];
    这两个表达式返回值的类型都是 *** T * ***
    int *p = new int;

  • 用“new”动态分配的内存空间,一定要“delete”运算符进行释放
    delete 指针:该指针必须指向 new 出来的空间

int *p = new int ;
*p =5;
delete p;
delete p;//导致异常,一片空间不能被 delete 多次
  • 用“delete”释放动态分配的数组,要加“[]”
    delete[] 指针://该指针必须指向 new 出来的数组
int *p = new int[20];
p[0] = 1;
delete[] p;

如果分配的空间没有被回收就会成为程序的垃圾碎片。

相关文章

  • C++中New关键字和命名空间

    动态内存分配 C++中的动态内存分配C++中通过new关键字进行动态内存申请C++中的动态内存申请是基于类型进行的...

  • C++中的新成员

    C++中的动态内存分配 C++中通过new关键字进行动态内存申请 C++中的动态内存申请是基于类型进行的 dele...

  • 十、动态内存分配与命名空间

    1、C++中的动态内存分配 通过new关键字进行动态内存申请 C++中的动态内存申请时基于类型进行的 delete...

  • freertos的动态内存分配之heap_1.c解析

    一、freertos的动态内存分配原理 首先,freertos的动态内存分配是一种“假”动态内存分配策略。所谓“假...

  • C++ - 动态内存分配

    有时候一个程序需要很大的内存,有时需要很小的空间,比较有效率的做法就是动态内存分配。 用 new 运算符实现动态内...

  • C++———动态内存分配

    动态内存分配用于提高内存的利用率,在c语言中使用malloc内置函数动态分配内存,而在c++中使用new运算符进行...

  • malloc

    动态内存分配mooc

  • 动态内存分配小记

    1.首先,什么是动态内存分配 所谓动态内存分配(Dynamic Memory Allocation)就是指在程序执...

  • C++ 动态内存分配技术

    动态内存分配在堆上: 静态内存分配在栈上:

  • C++之动态内存分配

    一、使用new分配内存 使用new动态分配的数组 栈区、堆区、全局区、常量区

网友评论

      本文标题:C++ - 动态内存分配

      本文链接:https://www.haomeiwen.com/subject/edkckttx.html