C++新知:new与delete操作与面向对象编程基础

需积分: 44 1 下载量 149 浏览量 更新于2024-07-14 收藏 16.97MB PPT 举报
在C++的学习笔记中,"new"和"delete"是两个关键的内存管理操作符,它们在动态内存分配和释放中起着核心作用。"new"用于在堆内存中申请内存空间,并返回一个指向该空间的指针,而"delete"则用于释放由"new"分配的内存,确保内存的正确回收。 1. **内存管理的重要性**: C++中的内存分为栈和堆两种。栈内存是由编译器自动管理的,生命周期通常限于函数调用。而"new"和"delete"针对的是堆内存,程序员必须手动管理这些动态分配的内存,以防止内存泄漏。 2. **new的关键特性**: - **无名变量**: 使用"new"创建的变量没有名字,需要通过指针来引用。例如,`int *pival = new int(100);` 中,`pival`是这个动态分配的整数的指针,`*pival`用来访问该内存中的值。 - **责任与义务**: 持有内存的指针在不再需要该内存时,必须使用"delete"释放,否则可能导致内存泄漏,影响程序性能和稳定性。 3. **C++概述**: - C++的创始人是Bjarne Stroustrup博士,他于1979年开始开发C++,最初名为"C with Class",后演变为现在的C++。C++是一种通用编程语言,尤其适合系统级编程,因为它继承了C的优点,如效率高,同时引入了数据抽象、面向对象和泛型编程等特性。 - C++的发展经历了三个阶段:早期的传统面向对象语言,然后加入了泛型编程支持(如STL和Boost),以及现代阶段的模板元编程和更高级功能。 4. **C++的行业地位**: C++在软件行业中具有很高的地位,常用于嵌入式系统、游戏开发、网络编程和系统编程等领域。它的广泛应用证明了其强大的功能和灵活性。根据Tiobe编程语言排行榜,C++长期保持在前几位,显示出其持久的影响力。 5. **学习资源与实践**: 学习C++时,可以参考多本书籍,如《The C++ Programming Language》和《C++ Primer》,并结合实际的编程练习,包括选择题、填空题和编程题,以加深对概念的理解和掌握。此外,理解C与C++的关系,如C++是C的超集,也十分重要。 在学习过程中,要特别注意内存管理的规则,因为这是保证程序健壮性的重要环节。通过不断实践和理论结合,逐步提升C++编程技能。

15:23:44.436 -> --------------- CUT HERE FOR EXCEPTION DECODER --------------- 15:23:44.532 -> 15:23:44.532 -> Soft WDT reset 15:23:44.532 -> 15:23:44.532 -> Exception (4): 15:23:44.532 -> epc1=0x40106871 epc2=0x00000000 epc3=0x00000000 excvaddr=0x00000000 depc=0x00000000 15:23:44.628 -> 15:23:44.628 -> >>>stack>>> 15:23:44.628 -> 15:23:44.628 -> ctx: cont 15:23:44.628 -> sp: 3ffffd30 end: 3fffffd0 offset: 0160 15:23:44.676 -> 3ffffe90: 60000314 00000006 00000044 40202e23 15:23:44.724 -> 3ffffea0: 00000002 3ffee608 3ffee774 40202f11 15:23:44.820 -> 3ffffeb0: 00000048 3ffee774 00000001 3ffee57d 15:23:44.820 -> 3ffffec0: 60000314 00000001 3ffee774 00000002 15:23:44.916 -> 3ffffed0: 3ffef5c4 3ffee556 00000002 402013c0 15:23:44.965 -> 3ffffee0: 00000001 00000048 00000000 402013f4 15:23:45.012 -> 3ffffef0: 3ffee774 3ffee57c 00000002 402017e4 15:23:45.060 -> 3fffff00: 00000000 00000001 3ffee574 3ffef5c4 15:23:45.108 -> 3fffff10: 00000002 00000002 00000000 40201860 15:23:45.156 -> 3fffff20: 3ffee556 00000001 00000001 00000000 15:23:45.204 -> 3fffff30: 00000000 00000003 3ffef5c4 3ffee72c 15:23:45.252 -> 3fffff40: 3fffdad0 3ffee556 3ffee548 402015bc 15:23:45.300 -> 3fffff50: 60000314 00000000 3ffee548 402015e4 15:23:45.396 -> 3fffff60: 3fffdad0 00000000 3ffee548 40201692 15:23:45.396 -> 3fffff70: 00000001 00000048 3ffee548 402010a3 15:23:45.492 -> 3fffff80: 00000000 feefeffe 3ffee774 3ffee72c 15:23:45.492 -> 3fffff90: 3fffdad0 00000000 3ffee574 4020143c 15:23:45.588 -> 3fffffa0: 3ffee55c 00000000 3ffef5c4 3ffee72c 15:23:45.636 -> 3fffffb0: 3fffdad0 00000000 3ffee700 40202300 15:23:45.685 -> 3fffffc0: feefeffe feefeffe 3fffdab0 40100eb1 15:23:45.733 -> <<<stack<<< 15:23:45.733 -> 15:23:45.733 -> --------------- CUT HERE FOR EXCEPTION DECODER --------------- 15:23:45.828 -> H!⸮⸮L^⸮ ⸮⸮@H⸮JG⸮⸮⸮E

2023-07-14 上传