dangling-pointer相关内容

有没有办法检查指针是否悬空?

我有一个代码,我使用指针来访问一些数据块.在极少数情况下,数据块的一些成员是空的,因此指针变得悬空.事实上,我得到了正确的指针,但是当试图用指针做某事时程序崩溃了. 通常的建议是避免这种用法.但遗憾的是,我使用的框架要求我使用这种类型的数据访问方法. 有没有办法在对指针进行任何操作之前“检查"指针是否无效?显然,检查指针是否不等于 NULL 不起作用.我也试过这个: 试试{CStri ..
发布时间:2022-01-12 14:50:45 C/C++开发

弱引用和无主引用有什么区别?

斯威夫特有: 强有力的参考 弱引用 无主引用 无主引用与弱引用有何不同? 什么时候使用无主引用是安全的? 无主引用是否存在安全风险,例如 C/C++ 中的悬垂指针? 解决方案 weak 和 unowned 引用都不会创建 strong 保留引用的对象(也就是它们不会增加保留计数以防止 ARC 取消分配引用的对象). 但为什么是两个关键字?这种区别与 Opt ..

了解这种情况下的悬空指针行为

我有一个指针,默认情况下它带有 NULL 然后它等待某个事件并在事件发生时获取一个值,稍后我正在释放其他地方的指针,但即使在释放指针后我没有将其设为 NULL 所以它仍然继续引用相同的内存位置,我知道下一个 malloc 调用可能将该内存块分配给其他内存请求! pointer_type *p = NULL;而(process_get_wakeup(//一些逻辑//)){while ((qelem ..
发布时间:2021-06-18 20:03:28 其他开发

我如何打印悬空指针以进行演示?

我正试图向某人解释为什么他们有一个悬空的指针以及自由实际上是如何工作的(指针是值,因此是按值传递的),但是为此,我认为我需要一种打印指针的方法并非“不确定"(例如 printf(“%p",ptr)的情况). memcpy能做到吗? char buf1 [sizeof(char *)];char buf2 [sizeof(char *)];char * malloced = malloc( ..
发布时间:2021-05-28 20:18:34 其他开发

简单高效的弱指针,在释放目标内存时将其设置为NULL

是否有一个简单,有效的弱/受保护指针??我需要指向同一对象的多个指针,这些指针在删除对象时都自动设置为NULL.总是有一个“主"指针总是用于删除对象,但是也可以有多个其他指针引用同一对象. 以下是一些与我的需求不完全匹配的解决方案: QPointer :我没有开发QT应用程序;我不希望包含QObject的这个库/源代码. boost :: weak_ptr :访问已释放对象时,将引发 ..
发布时间:2020-05-28 22:05:01 C/C++开发

什么是悬空指针?

我知道这是很常见的问题,但对我来说仍然是新问题! 我不理解悬挂指针的概念,正在四处搜寻,并编写了测试方法来查找指针. 我只是想知道这是一个悬垂的指针吗?无论我发现什么示例返回了什么,在这里我都在尝试类似的东西! 谢谢! void foo(const std::string name) { // will it be Dangling pointer?!, with ..
发布时间:2020-05-28 21:14:45 C/C++开发

使用numpy/ctypes公开C分配的内存缓冲区的更安全方法?

我正在为使用共享内存缓冲区存储其内部状态的C库编写Python绑定.这些缓冲区的分配和释放是由库本身在Python外部完成的,但是我可以通过从Python内部调用包装的构造函数/析构函数来间接控制何时发生这种情况.我想将某些缓冲区公开给Python,以便我可以从中读取,并在某些情况下将值推入它们.性能和内存使用是重要的考虑因素,因此我希望避免在任何可能的地方复制数据. 我当前的方法是创建一个 ..
发布时间:2020-05-18 20:43:35 Python

内存分配栈

在堆栈中,为main保留了内存,我们将其称为main函数的堆栈帧. 当我们调用Add函数时,内存保留在堆栈的顶部.在Add函数堆栈框架中,a和b是局部指针,而c是一个整数,用于计算总和,然后返回引用. c是Add函数的局部变量. 现在,当Add函数执行完成时,堆栈中的内存空间也会被释放,因此,当我们尝试使用指针p访问main中的该地址时,我们试图访问的基本上是一个释放空间.编译器发出警 ..
发布时间:2020-05-08 22:14:16 C/C++开发

如何在Swift中演示僵尸对象?

我已阅读如何演示是Xcode Instruments中的内存泄漏和僵尸对象?,但这是针对Objective-C的.这些步骤不适用. 通过阅读此处,我已经了解僵尸是以下物体: 已分配 但是指针仍在尝试指向它们并向其发送消息. 不确定是否与访问已释放对象有什么不同. 我的意思是在Swift中您可以做到: var person : Person? = Person(nam ..
发布时间:2020-05-08 21:43:08 移动开发

弱引用和非引用之间有什么区别?

雨燕有 强引用 参考文献不足 无人参考 无主引用与弱引用有何不同? 什么时候可以安全使用无主引用? 没有人引用C/C ++中的悬挂指针这样的安全风险吗? 解决方案 weak和unowned引用都不会在所引用的对象上创建strong保留(也就是它们不会按顺序增加保留计数)以防止ARC取消分配所引用的对象). 但是为什么要使用两个关键字?这种区别与Option ..

删除指针并将其设置为nullptr有什么区别?

是说delete pointer和pointer = nullptr一样吗?可能不是,但是后者会释放内存吗? delete pointer; pointer = nullptr/pointer = nullptr; delete pointer呢?为什么不使用它来提供一种安全的方法来在需要时过早地删除指针,而该指针通常会在其他时间被删除并导致正常删除的错误呢? 解决方案 这是不一样的,因为 ..
发布时间:2020-05-08 19:16:35 C/C++开发

GCC编译C / C ++最强化的选项是什么?

什么样的GCC选项可以提供最佳的防范内存损坏漏洞,例如缓冲区溢出和悬挂指针? GCC是否提供任何类型的ROP链缓解?是否有性能问题或其他问题妨碍GCC选项在生产中的任务关键应用程序上运行? 我正在查看 Debian Hardening Guide 以及 GCC Mudflap 。以下是我正在考虑的配置: -D_FORTIFY_SOURCE = 2 -fstack-protecto ..
发布时间:2018-04-20 17:27:59 C/C++开发

什么是悬挂指针

我知道这是很常见的问题,但对我来说仍然是新的! 我不明白悬挂指针的概念,正在搜索,写测试方法 找到一个...我只是想知道这是一个悬挂指针吗?无论什么例子,我发现是返回 的东西,这里我正在尝试类似的东西! 谢谢! void foo(const std :: string name) { new_foo (name.c_str()); /////将是Dangling指针?!,评 ..
发布时间:2016-10-11 20:29:29 C/C++开发