如何在 C++ 中防止非法内存访问或捕获段错误?

问题描述 投票:0回答:0

我正在为 C++ 编写 VSC 扩展。当到达断点时,扩展正在为实际范围内的每个变量调用 C++ 进程中的函数。我可以通过调试适配器协议变量请求获得的变量名称和类型。但是由于我只得到一个包含实际范围内所有变量的列表,所以我无法区分初始化指针和非初始化指针。以及我不知道它指向的内存是否已初始化或可能已经被释放。

特别是在尝试访问非初始化指针指向的内存时,我遇到了分段错误。

我正在考虑使用“access_ok”来提前检查指针的有效性,或者在访问指针时尝试捕获段错误,这样程序就不会因为这个扩展而崩溃。但由于我不是在编写内核应用程序,所以我无法包含此类功能。有没有办法提前阻止这种非法访问?最好是跨系统的(Windows、MacOS 和 Linux)?

c++ pointers gdb vscode-extensions
© www.soinside.com 2019 - 2024. All rights reserved.