gpt4 book ai didi

c++ - 在 C/C++ 代码中查找指针是否静态等同于停止问题?

转载 作者:可可西里 更新时间:2023-11-01 18:37:49 25 4
gpt4 key购买 nike

我对静态代码分析的非常正式的方面并没有太深的了解,因此提出了这个问题。

几年前,我读到使用静态代码分析从数据中区分代码相当于 Halting Problem . (需要引用,但我没有它了。Stackoverflow 在这个 herehere 上有线程。)至少对于基于 Von Neumann architecture 的常见计算机体系结构。在代码和数据共享同一内存的地方,这似乎是有道理的。

现在正在看C/C++代码的静态分析和指针分析;程序不执行。不知何故,我有一种感觉,静态地跟踪指针值的所有创建和使用类似于停止问题,因为我无法确定内存中的给定值是否是指针值,即我无法通过跟踪指针值的值流内存。 Alias analysis可能会缩小问题的范围,但在面对多线程代码时似乎变得没那么有用了。

(人们甚至可以考虑跟踪任意值,而不仅仅是指针:为任何给定的“有趣”值构建完整的值(value)流似乎等同于停机问题。)

由于这只是一种预感,我的问题是:我可以引用关于此的更正式的调查结果吗?我错了吗?

最佳答案

您可以随时编写代码:

extern bool some_program_halts();
extern int* invalid_pointer();

#include <iostream>
int main()
{
using namespace std;
if( some_program_halts() ) { cout << *invalid_pointer() << endl; }
}

检查此程序是否取消引用无效指针等同于查找对 some_program_halts() 的调用是否暂停。

关于c++ - 在 C/C++ 代码中查找指针是否静态等同于停止问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20848918/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com