为什么要增加导致崩溃的指针
Why increment a pointer casuing crash?
我学习了在c++编程中分配和释放memroy。我尝试增加指针,然后使用delete。它坠毁了!为什么会发生这种情况?
int *pint = new int ;
double *pDouble = new double;
*pint = 3;
*pDouble = 3.5;
pint++;
pDouble++;
delete pint;
delete pDouble;
问题
int *pint = new int ;
动态分配单个int
。后来,
pint++;
增加指针,而不是值。增加指针使指针前进一个元素,因此pint++
将pint
中的地址前进一个int
,以指出所分配的内容的边界之外。尝试访问或delete
所指向的内容将调用Undefined Behavior,并且很可能导致程序崩溃。
pDouble++;
具有相同的效果,但前进到下一个double
。
解决方案
除了不这样做之外,没有太多的解决方案。如果你需要增加一个指针,例如要遍历一个数组,请确保你保留一个指向原始地址的指针,这样你就可以在完成后释放它。
相关文章:
- 为什么要增加导致崩溃的指针
- 指针相关的UE4崩溃.我的指针哪里错了?
- 访问提升:shared_ptr 主范围外崩溃,断言失败:px != 0.指针的正确用法是什么?
- 当键是虚拟继承中涉及的基类指针时,对 std::unordered_map 项的访问崩溃
- 由于指针算法错误,代码在 memcpy 中崩溃
- 使用唯一指针调用函数会使我的程序崩溃
- 智能指针的排序向量:神秘崩溃
- 类指针方法崩溃程序
- 在C++中删除指针数组时析构函数崩溃
- 使用push_back方法获取智能指针矢量时应用崩溃
- 为什么此代码在此 Trie 实现中使用映射 c++ 中的指针崩溃?
- 从 GetProcAddress 获取的函数指针在使用 stdlib 时会使程序崩溃
- 在函数内部错误定位后,从函数中释放返回的指针会导致芯片崩溃
- 为什么此自定义指针类会崩溃?
- 函数和指针帮助:程序生成,但崩溃,没有任何特定错误
- 定义指针随机崩溃该程序
- 在崩溃时释放分配的指针的正确方法
- C++ Cout 在使用指针时崩溃
- 取消引用会导致崩溃,即使对于非 NULL 指针也是如此,原因也是如此
- 为什么此代码可能会在C++中崩溃(指针返回)