虽然在C++中自C++11引入了smart pointer,虽然很大程度上能够避免使用裸指针,但仍然不能完全避免,最重要的一个原因是你不能保证组内其他人不适用指针,更不能保证合作部门不使用指针。 那么为什么C/C++中会存在指针呢? 这就得从进程的内存布局说起。 进程内存布局 上图为32位进程的内存布局,从上图中主要包含以下...
对一个指针解地址,就可以取到这个内存数据,解地址的写法,就是在指针的前面加一个*号。解指针的实质是:从指针指向的内存块中取出这个内存数据。 指针之间的赋值 指针赋值和int变量赋值一样,就是将地址的值拷贝给另外一个。指针之间的赋值是一种浅拷贝,是在多个编程单元之间共享内存数据的高效的方法。 int* p1 =...
一个'裸'指针,文件句柄,或者临界区状态没有所有者来确保它们的最终释放。基本的资源管理的前提就是确保每个资源都有他们的所有者。 1.2.1第一条规则(RAII) 一个指针,一个句柄,一个临界区状态只有在我们将它们封装入对象的时候才会拥有所有者。这就是我们的第一规则:在构造函数中分配资源,在析构函数中释放资源。
我觉得题目中说的很对,指针就是存放地址的变量、能解除引用、能加减,知道这些你就可以说自己学会指针...
指针是C语言中的精华,也是一把双刃剑,关系到安全和效率。 1 系统内存布局 2 存储变量的内存地址 3 指针定义:变量,地址,类型(宽度) 4 指针声明 5 &与*运算符 6 定义指针与解引用 7 指针初始化 8 指针指向类型长度计算:sizeof(*p) 9 void* 类型指针 ...
智能指针是比原始指针更智能的类,解决悬空(dangling)指针或多次删除被指向对象,以及资源泄露问题,通常用来确保指针的寿命和其指向对象的寿命一致。智能指针虽然很智能,但容易被误用,智能也是有代价的。\n\n 1.为什么要使用智能指针\n因为裸指针存在很多问题,主要是下面这些: ...
一、字符串的实质就是指针 字符串是C语言中最基础的概念,也是最常被用到的。在嵌入式开发中,我们经常要将一些字符串通过串口显示到串口助手或调试终端上,作为信息提示,以便让我们了解程序的运行情况;或者是将一些常量的值转为字符串,来显示到液晶等显示设备上。那么,C语言中的字符串到底是什么?其实字符串本身就是...
使用裸指针时,要记得释放内存。 { int* p = new int(100); // ... delete p; // 要记得释放内存} 使用unique_ptr 自动管理内存。 { std::unique_ptr<int> uptr = std::make_unique<int>(200); //... // 离开 uptr 的作用域的时候自动释放内存} ...
建议 –在你从共享指针中获取对应的裸指针之前请仔细考虑清楚。你永远不知道别人什么时候会调用delete来删除这个裸指针,到那个时候你的共享指针(shared_ptr)就会出现Access Violate(非法访问)的错误。 错误#7:当使用一个shared_ptr指向指针数组时没有使用自定义的删除方法!