-
C++中的动态内存分配
-
C++中通过new关键字进行动态内存分配
-
C++中的动态内存申请是基于类型进行的
-
delet关键字用于内存释放
1 1 //变量申请 2 2 Type*pointer = new Type; 3 3 //.... 4 4 delete pointer; 5 5 6 6 //数组申请 7 7 Type*pointer = new Type[N]; 8 8 //.... 9 9 delete[] pointer;
10 #include "stdio.h" 11 int main() 12 { 13 //new可以初始化 14 int *p = new int(100); 15 //*p = 5; 16 *p = *p + 5; 17 printf("p=%p ",p); 18 printf("*p=%d ",*p); 19 delete p; 20 p = new int[10]; 21 for (int i = 0; i < 10;i++) 22 { 23 p[i] = i + 1; 24 printf("p[%d]=%d ",i,p[i]); 25 } 26 delete p; 27 return 0; 28 }
运行结果:
pi@raspberrypi:~ $ g++ main.cpp
pi@raspberrypi:~ $ ./a.out
p=0x15c4058
*p=105
p[0]=1
p[1]=2
p[2]=3
p[3]=4
p[4]=5
p[5]=6
p[6]=7
p[7]=8
p[8]=9
p[9]=10
-
new关键字与malloc函数的区别
-
new关键字是C++的一部分
-
malloc是由C库提供的函数
-
new以具体类型为单位进行内存分配
-
malloc以字节为单位进行内存分配
-
new在申请单个类型变量时可进行初始化
-
malloc不具备内存初始化的特性