gpt4 book ai didi

c - C语言中 "wild pointer"是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 16:25:27 25 4
gpt4 key购买 nike

谁能告诉我,野指针在C中的含义,如何获得它,在C++中是否可用?

最佳答案

该标准没有定义或使用术语“野生”。我会小心地“纠正”其他人对它的含义的看法,而且我会特别避免引用随机的非规范互联网垃圾来支持我的立场。

对我来说,这意味着一个指针既不指向合法对象,也不为 NULL。这些类型的指针值的可能来源可能包括未初始化的指针对象、已不复存在的对象、计算出的指针值、未正确对齐的指针值、指针本身或其指向的意外损坏等。

int main(void)
{

int *p; // uninitialized and non-static; value undefined
{
int i1;
p = &i1; // valid
} // i1 no longer exists; p now invalid

p = (int*)0xABCDEF01; // very likely not the address of a real object

{
int i2;
p = (int*)(((char*)&i2) + 1); // p very likely to not be aligned for int access
}

{
char *oops = (char*)&p;
oops[0] = 'f'; oops[1] = 35; // p was clobbered
}
}

等等,等等。在 C 中有各种各样的方法可以获取无效的指针值。我最喜欢的是试图通过将对象的地址写入文件来“保存”他的对象的人。奇怪的是,当他在程序的另一次运行中读回那些指针值时,它们不再指向他的对象。花哨的,那个。

但这正是狂野对我的意义。由于它不是一个规范性术语,因此它表示说话或写它的人的意思。问他或她。

关于c - C语言中 "wild pointer"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2583656/

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