内存管理(上)
1.内存分配方式
1>从静态存储区分配。全局变量,static变量
2>在栈上创建
3>从堆上分配,亦称动态内存分配。malloc,new,free,delete
2.常见内存错误及其对策
1>内存分配未成功,却使用了它(assert(p!=NULL))
2>内存分配成功,但未初始化就引用它
3>越界
4>忘记释放内存,却继续使用它
注意:return语句不要返回指向“栈内存”的“指针”或者“引用”,该内存在函数体结束时被自动销毁
释放内存后,指针应该设置为NULL
3.指针与数组对比
1>修改内容
char *p = "world";
p[0] = 'X'; //存在问题
cout<<p<<endl;
2>内容复制与比较
strcpy与strcmp函数
3>计算内存容量
sizeof函数
1.内存分配方式
1>从静态存储区分配。全局变量,static变量
2>在栈上创建
3>从堆上分配,亦称动态内存分配。malloc,new,free,delete
2.常见内存错误及其对策
1>内存分配未成功,却使用了它(assert(p!=NULL))
2>内存分配成功,但未初始化就引用它
3>越界
4>忘记释放内存,却继续使用它
注意:return语句不要返回指向“栈内存”的“指针”或者“引用”,该内存在函数体结束时被自动销毁
释放内存后,指针应该设置为NULL
3.指针与数组对比
1>修改内容
char *p = "world";
p[0] = 'X'; //存在问题
cout<<p<<endl;
2>内容复制与比较
strcpy与strcmp函数
3>计算内存容量
sizeof函数