c - C指针数组随机更改地址
问题描述
我正在为后缀计算器编写代码,为此我需要将标记和值(“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。
推荐阅读
- stata - 计数命令的使用
- apache-spark - 我有 56 列的表,想加载 46 列数据,我该怎么做?
- php - 如何使用 PhpMailer 在回复邮件中发送 gmail 线程 ID
- php - 安装库时找不到php composer类
- reactjs - 如何在图像滑块中使用系统图像而不是 React Native 中的链接
- c# - 如何在 Selenium 中打开新标签页
- php - Post 方法的 MethodNotAllowedHttpException .Get 和 Head 支持
- node.js - 无法在 hello.cc 中打开源文件“node.h”
- c++ - C++20 constexpr 容器将如何工作?
- django - Django查看单元测试与自定义模板标签冲突