因为C++使用内存的时候很容易出现野指针、悬空指针、内存泄露的问题。所以C++11引入了智能指针来管理内存。有四种: auto_ptr:已经不用了 unique_ptr:独占式指针,同一时刻只能有一个指针指向同一个对象 shared_ptr:共享式指针,同一时刻可以有多个指针指向同一个对象 weak_ptr:用来解决shared_ptr相互引用导致的死锁问题...
简介: 【C/C++ 泡沫精选面试题03】谈谈C/C++ 智能指针?面试官考察意图 面试官在提出这个问题时,可能想要考察应聘者的以下几个方面: C++基础知识:应聘者是否理解智能指针的概念和用法,这是最基本的要求。 C++内存管理能力:智能指针是处理内存管理的重要工具,对其的理解程度反映了应聘者处理内存管理问题的能力。 了解...
1.智能指针能够自动释放所指的对象,也就是说智能指针能够更方便的管理指针对象的生命周期。 2.指针用于指向内存地址,而智能指针使用的是类模板。 3.智能指针是C++的抽象,有不同的实现(如std::unique_ptr、std::shared_ptr、std::weak_ptr等) 指针常量和常量指针和常量指针常量 define与const关键字的多种用法 nu...
我简单的总结下就是:将基本类型指针封装为类对象指针(这个类肯定是个模板,以适应不同基本类型的需求),并在析构函数里编写delete语句删除指针指向的内存空间。 因此,要转换remodel()函数,应按下面3个步骤进行: 包含头义件memory(智能指针所在的头文件); 将指向string的指针替换为指向string的智能指针对象; 删除delete...
这道题我几年前在华为的面试题中也遇到过。 代码很简短,main函数定义了一个指针变量p,然后将其地址传递给fun函数,fun函数使用malloc函数在堆上分配了100个字节的空间,并把这块内存的地址赋值给了p。回到main函数中,紧接着调用free函数释放刚刚分配的内存。
1,智能指针:auto_ptr(c++11 已经弃用),unique_ptr(用于取代 auto_ptr), shared_ptr, weak_ptr http://www.cnblogs.com/TenosDoIt/p/3456704.html(值得一看) https://blog.csdn.net/zhourong0511/article/details/80315961(优缺点分析) smart pointer ...
2. 嵌套指针释放不完全 释放指针数组时,不光需要释放对象的内存空间,还要释放其中的每个指针。如果只是释放对象的内存空间,就会导致释放不完全,造成内存泄漏。 // 数组指针 int (*a)[N] = new int[M][N]; // M元数组的头指针a,指向一个N元数组,N必须为已知 ...
从较浅的层面看,智能指针是利用了一种叫做RAII(资源获取即初始化)的技术对普通的指针进行封装,这使得智能指针实质是一个对象,行为表现的却像一个指针。 智能指针的作用是防止忘记调用delete释放内存和程序异常的进入catch块忘记释放内存。另外指针的释放时机也是非常有考究的,多次释放同一个指针会造成程序崩溃,这些都...
解答思路:野指针是指未初始化或已被释放但仍然被使用的指针。野指针会导致程序崩溃或未定义行为。为了避免野指针,我们应该始终确保指针在使用前已被正确初始化,并且在指针指向的内存被释放后不再使用该指针。此外,我们还可以使用智能指针(尽管C语言本身不支持智能指针,但可以使用结构体和函数来模拟)或其他内存管理技术...
8.假如给你一个class,让你去用class去实现一个智能指针,你会怎么做? 答案: 要实现一个智能指针,可以按照以下步骤进行: 创建一个类,作为智能指针的封装。这个类将管理底层指针,并提供安全和方便的操作。 在类中添加一个私有成员变量,用于存储底层指针。