龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > C/C++开发 >

C和C++语言学习总结(二)(2)

时间:2009-12-22 15:42来源:未知 作者:admin 点击:
分享到:
内存错误 内存分配未成功,却使用了它. 内存分配虽然成功,但是尚未初始化就引用它. 内存分配成功并且已经初始化,但操作越过了内存的边界. 例如在使用

  内存错误

  内存分配未成功,却使用了它.

  内存分配虽然成功,但是尚未初始化就引用它.

  内存分配成功并且已经初始化,但操作越过了内存的边界. 例如在使用数组时经常发生下标"多1"或者"少1"的操作.特别是在for 循环语句中,循环次数很容易搞错,导致数组操作越界.

  忘记了释放内存,造成内存泄露.

  放了内存却继续使用它.

  函数的return 语句写错了,注意不要返回指向"栈内存"的"指针"或者"引用",因为该内存在函数体结束时被自动销毁.

  程序中的对象调用关系过于复杂,实在难以搞清楚某个对象究竟是否已经释放了内存,此时应该重新设计数据结构,从根本上解决对象管理的混乱局面.

  使用free 或delete 释放了内存后,没有将指针设置为NULL.导致产生"野指针".

  malloc与new区别

  malloc 与free 是C++/C 语言的标准库函数,new/delete 是C++的运算符.它们都可用于申请动态内存和释放内存.

  对于非内部数据类型的对象而言,光用maloc/free 无法满足动态对象的要求.对象在创建的同时要自动执行构造函数, 对象在消亡之前要自动执行析构函数.由于malloc/free 是库函数而不是运算符,不在编译器控制权限之内,不能够把执行构造函数和析构函数的任务强加于malloc/free.因此C++语言需要一个能完成动态内存分配和初始化工作的运算符new,以及一个能完成清理与释放内存工作的运算符delete.注意new/delete 不是库函数.

  5、类重载、隐藏与覆盖区别

  成员函数被重载的特征:

  (1)相同的范围(在同一个类中);

  (2)函数名字相同;

  (3)参数不同;

  (4)virtual 关键字可有可无.

  覆盖是指派生类函数覆盖基类函数,特征是:

精彩图集

赞助商链接