内存使用准则

  函数中的变量使用的栈区的内存,函数调用结束后栈区的内存是要被释放掉的。

  例一:

  char* p="Hello World1";//静态区数据,可以访问,不可以赋值

  chara[]="Hello World2";//存于数组中,此数据存储于栈区,对它的修改没有任何问题

  char* p1 ="Hello World1";//p 和p1 存的地址是完全相同的


  例二:

  char *f1()

  {

  char*p =NULL;

  char a;

  p=&a;

  return p;

  }//可以返回指针,但是指针没有意义,因为栈区的a会在函数调用后释放掉,将返回未知的空间

  char *f2()

  {

  char *p=NULL;

  p=(char*) new char[4];

  return p;

  }//返回在堆区申请的空间,对区的好处是可以自己控制变量的生存期

需要记住的内存使用准则:

  1、用malloc或new申请内存之后,应该立即检查指针值是否为NULL。防止指针值为NULL的内存。

  2、不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。

  3、避免数组或指针的小标越界,特别要当心发生“多1”或者“少1”操作。

  4、动态内存申请释放必须配对,防止内存泄漏。

  5、使用free或delete释放内存之后,立即将指针设置为NULL,防止产生“野指针”。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值