gpt4 book ai didi

C 指针数组随机改变地址

转载 作者:太空宇宙 更新时间:2023-11-04 07:43:31 27 4
gpt4 key购买 nike

我正在为 Postfix 计算器编写代码,为此我需要将标记和值 ("a=5", "b=10") 添加到指针数组。

这个指针数组在我实现分离链接时使用。因此,每个索引都是标记和值链表的开始。但是,存在这个奇怪的错误/错误,这样数组中指针的地址(以全 NULL 开头)会在该指针没有进行内存访问或地址更改时发生变化。这发生在解析指针数组之间。图片在这里1准确显示了我在程序上运行 GDB 时发生的情况。红色箭头表示正在执行的行。蓝色区域是正在监视的内存,黄色突出显示的行表示地址已更改。您可以看到相同的 symtab->table[3] 的先前地址都等于 NULL ({0x0})。知道为什么会这样吗?代码本身在下面,

//This part of the program iterates through each linked list
//Previous declaration of Array of Pointers-
//Symbol* localArrayOfPointers[HASH_TABLE_INITIAL]
Symbol** current = symtab->table;
for (int i = 0; i < hash_get_capacity(symtab); i++)
{ //The address changes in between here I believe
if(current[i] == NULL){
continue;
}
else{
//Other code omitted as there is nothing changing any addresses

最佳答案

未初始化的指针不一定是NULL指针,它可以指向任何地址,所以“if”中的表达式总是假的,除非它被赋值给NULL。

关于C 指针数组随机改变地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58636919/

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