#include "stdafx.h" #include<iostream> int _tmain(int argc, _TCHAR* argv[]) { //动态内存的分配,必须清楚的是,分配后返回的必然是一个地址,即一个指针 //动态内存分配,第二点必须要说明分配大小,分配类型应该与返回类型一致 //第三点,动态内存,由于申请的空间可能会有数据存在,在字符串copy时一般要先初始化 //初始化函数为:memset(需要初始化字符串地址,初始化值,需要初始化元素个数) //用完申请的空间后,需要释放空间,以免造成内存泄漏。 //释放空间,如果申请的是多个连续空间,需delete[]p //申请空间 int *n_a = new int;//申请一块int空间 int *n_b = new int(2);//申请一块int空间并初始化为2 int *n_c = new int[3];//申请3个int空间 char *c_a = new char;//申请一个char空间 char *c_b = new char('p');//申请一个char空间并初始化为p char *c_c= new char[3];//申请3个char空间 //初始化空间,这里只对复杂的示范char[3] //我们知道,字符数组如果一开始没有初始化 //那么以后的赋值只能一个一个元素赋值 //常用的就是copy过去 memset(c_c, 0,3*sizeof(char)); char *cp_c = "lai"; strcpy_s(c_c, 3, cp_c); delete[]c_c; //多维数组分配 int n = 10, m = 8; char **array = new char*[n]; for (int i = 0; i<n; i++) array[i] = new char[m]; /*注意:上面代码在释放分配的内存时要特别注意。因为这是“深度内存分配”,所以释放时,要对每个单元里的指针指向的内存予以释放。释放内存代码如下: */ for (int i = 0; i<n; i++) delete[] array[i]; delete[] array; return 0; }