c/c++中应用指针须要重视的题目

    添加时间:2013-7-29 点击量:

    一、应用指针的时辰须要重视几点:

    • 分派空间
    • 初始化
    • 开释

    二、常见的错误有几种:

    1)内存分派未成功,却应用了它

         编程新手常犯这种错误,因为他们没有意识到内存分派会不成功。常用解决办法是,应用内存之前搜检指针是否为Null。

    若是指针p是函数的参数,那么在函数的进口处用assert(p != NULL)进行搜检。若是应用malloc或new来申请内存,应当用if(p == NULL)或if(p != NULL)进行放错处理惩罚。

    2)内存分派固然成功,然则尚未初始化就引用它

          犯这种错误首要有个原由:一是没有初始化的观念;二是误认为内存的缺省初值全为零,导致引用初值错误(eg. char p[]={‘\0’}).内存的缺省初值毕竟是什么并没有同一的标准,尽管有些时辰为零,所以无论用何种体式格式创建数组,都别忘了赋初值,即便是赋零值也不成省略,不要嫌麻烦。

    3)内存分派成功并且已经初始化,但操纵超出了内存的鸿沟

          例如在应用数组是经常产生下标”多1”或者“少1”的操纵,希罕是在for轮回语句中,轮回次数很轻易搞错,导致数组操纵越界。

    4)忘怀了开释内存,造成内存泄漏

           含有这种错误的函数每被调用一次就丧失一块内存,刚开端时体系的内存充沛。你看不到错误。当法度所占内存大时,体系呈现提示:内存耗尽。动态内存的申请与开释必须配对,法度中malloc与free的应用次数必然要雷同,不然必然有错误

    5)开释了内存却持续应用它

    &#160;&#160;&#160;&#160;&#160;&#160; 呈现这种景象,有三个原因:<1>法度中的对象调用关系过于错杂,其实难以搞清楚某个对象毕竟是否已经开释了内存,此时应当从头设计数据布局,从底子上解决对象经管的杂沓场合排场。<2>函数的return语句写错了,重视不要返回指向“栈内存”的“指针”或者“引用”,因为该内存在函数体停止时被主动烧毁。<3>应用free或开释了内存后,没有将指针设置为NULL。导致产生“野指针”

    &#160;&#160;&#160; [规矩1]用malloc或new申请内存之后,因该立即搜检指针值是否为NULL。防止应用指针值为NULL的内存。

    &#160;&#160;&#160; [规矩2]不要忘怀为数组和动态内存赋初值。防止将未被初始化的内存作为右值应用。

    &#160;&#160;&#160; [规矩3]避免数字或指针的下标越界,希罕要把稳产生“多1”或者“少1”操纵

    &#160;&#160;&#160; [规矩4]动态内存的申请与开释必须配对,防止内存泄漏

    &#160;&#160;&#160; [规矩5]用free或开释了内存之后,立即将指针设置为NULL,防止“野指针”

    &#160;

    原来,再大的房子,再大的床,没有相爱的人陪伴,都只是冰冷的物质。而如果身边有爱人陪伴,即使房子小,床小,也觉得无关紧要,因为这些物质上面有了爱的温度,成了家的元素。—— 何珞《婚房》#书摘#
    分享到: