详解c++动态内存分配与命名空间

  


  

  
      <李>通过新关键字进行动态内存申请李   <李> c++中的动态内存申请时基于类型进行的李   <李>删除关键用于内存释放
      李   
  

C语言其实是不支持动态内存分配的,是通过malloc库函数来实现的,可能有一些硬件根本不支持malloc;而新的c++是一个关键字,不管在任意编译器上,任意硬件平台上都是能够进行动态内存分配的,这是本质区别。

  

malloc是基于字节来进行动态内存分配的,新则是基于类型来进行动态内存分配

     //变量申请:   *指针类型=新类型;//从堆空间获取一个新类型的类型的空间//使用和C语言一样   删除指针;//这里指的是指针所指向的那个元素的内存空间被释放//数组申请:   *指针类型=新型[N];//N指数组大小,数组元素个数,并非字节数//删除[]指针;//数组的释放,需要在删除后面加[],和变量有区别//删除[]说明所要释放的指针是指向一片数组空间的,释放整个数组空间,如果用删除的话,指针指向的是数组的首元素地址,释放的就是首元素的内存空间,其余元素的内存空间并没有释放,会造成内存泄漏   之前            # include & lt; stdio.h>      int main ()   {   int * p=new int;      * p=5;   * p=* p + 10;      printf (" p=% p \ n ", p);   printf (" * p=% d \ n ", * p);      删除p;//指释放单个变量      p=new int [10];//p指向一片数组空间,//p所指向的内存空间,至少占用了40个字节,保证够用,可能分配得更多      for (int i=0;i<10;我+ +)   {   我[我]=+ 1;      printf (" p [% d]=% d \ n ", i, p[我]);   }      删除[]p;//释放数组      返回0;   }      之前      

新关键字与malloc函数的区别:

  
      <李>新关键字是c++的一部分   <李> malloc是由C库提供的函数   <李>新以具体的类型为单位进行内存分配李   <李> malloc以字节为单位进行内存分配李   <李>新在申请单个类型变量时可以进行初始化李   <李> malloc不具备内存初始化的特性李   
  

新关键字的初始化:

        int *π=new int (1);   浮* pf=新的浮动(2.0度);   char *电脑=new char (c) l      


  

  

在C语言中只有一个全局作用域

  
      <李> C语言所有的全局标识符共享同一个作用域李   <李>标识符之间可能发生冲突李   
  

c++中提出了命名空间的概念

  
      <李>命名空间将全局作用域分成不同的部分   <李>不同命名空间中的标识符可以同名而不会发生冲突李   <李>命名空间可以相互嵌套   <李>全局作用域也叫默认命名空间李   
  

定义:         名称空间的名字   {   名称空间内部   {/*……*/}/*……*/}   之前      

命名空间的使用

        使用命名空间名称;//使用整个命名空间   变量使用名称::;//使用命名空间中的变量   变量::;//使用默认命名空间中的变量            # include & lt; stdio.h>      名称空间的第一   {   int i=0;   }      名称空间第二   {   int i=1;      名称空间内部   {   struct P   {   int x;   int y;   };   }   }      int main ()   {   使用名称空间;   内部使用第二::::P;      printf("::我=% d \ n ", 1);   printf(“第二::i=% d \ n”,第二::我);      P P={2,3};      printf (" p。x=% d \ n”, p.x);   printf (" p。y=% d \ n”, p.y);      返回0;   }      

命名空间解决了全局变量命名冲突的问题

  


  

  

c++中内置了动态内存分配的专用关键字
  

  

c++中的动态内存分配可以同时进行初始化

  

c++中的动态内存分配时基于类型进行的

  

c++中命名空间概念用于解决名称冲突问题

  

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

详解c++动态内存分配与命名空间