(1)申请单个空间
申请格式:指针变量名 =new 类型标识符
释放格式:delete p;
int *p = new int;//申请,等价于int *p = new int(6)
*p = 6;//赋值
cout << *p << endl;//输出
delete p;//释放
p=NULL;//上完厕所洗手的好习惯
(2)申请数组空间
申请格式:指针变量名 =new 类型标识符 [内存单元个数]
释放格式:delete [ ] p;
int *p1 = new int[5];//申请数组
memset(p, 0, 5 * 4);//内存设置
p1[0] = 12;
p1[1] = 23;//赋值
cout << p1[0] << " "<<p1[1]<<" "<<p1[4];//输出
delete[]p1;//释放
p=NULL;//上完厕所洗手的好习惯
关于new和delete: new运算符返回的是一个指向所分配类型变量的指针。 delete p实际意思是删除p所指向的目标地址,释放它所占的内存,而非删除p指针。 (3)memset()函数
memset(void *s,int c,size_t n)
作用:将已开辟内存空间 s 的首 n 个字节的值设为值 c。
①memset函数,一般用在对定义的字符串进行初始化为‘ ’或‘/0’;如:
char a[100];
memset(a, '/0', sizeof(a));
②memset可以方便的清空一个结构类型的变量或数组:
如:
struct sample_struct
{
char csName[16];
int iSeq;
int iType;
};
对于变量
struct sample_strcut stTest;
一般情况下,清空stTest的方法:
stTest.csName[0]='/0';
stTest.iSeq=0;
stTest.iType=0;
用memset就非常方便:
memset(&stTest,0,sizeof(struct sample_struct));