调试时的数据异常,赋值操作不正确

开心的卡夫卡 2012-09-24 11:13:33


如图,单步调试时在执行到
(*config).iloader = 0;

这句之前的一些代码是对config指针的内存分配以及数据清空,结构体中只有简单的数据类型。

但对结构体数据清空后发现结构体中的数据仍不为0,如

上句执行之前的 iloader的值是 187。

这个是不理解之一。

其二,即便这样也欲将iloader的值赋为0,于是就有了

上面的语句 (*config).iloader = 0;

但这句执行后发现iloader的值仍为187 并没有被更改。

这是第二个疑惑。

-------------------------------------------------------------------------

如果有哪位遇到过类似的情况或经历请麻烦帮忙分析或者回忆下。

还有类似如下

 
int iCurr;

iCurr = config->iloader;

if(iCurr<NLOADERS)
(*config).loaders[(*config).iloader] = loader;
(*config).iloader++;

上面的config->iloader的值有时候是0

但是赋到iCurr后发现iCurr的值就已经不是0,而是其他值。

遇到这样的问题,没了头绪。

希望有经验的兄弟或者前辈可以想一想。

--------------------------------------------------------------

程序运行环境 vc6.0

源文件类型
.h
.c
---------------------------------------------------------------
不胜感激。
谢过 ;)
...全文
235 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
开心的卡夫卡 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 的回复:]
引用 5 楼 的回复:

引用 4 楼 的回复:
重建所有

已经重建过很多次,发觉问题仍旧依存。
谢谢帮助。


你不会在针对release做debug吧?如果是这样的话,神马情况皆有可能。
[/Quote]

多谢兄弟提请,我确定在debug下调试的。
出现这样情况,实在棘手。
pathuang68 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]

引用 4 楼 的回复:
重建所有

已经重建过很多次,发觉问题仍旧依存。
谢谢帮助。
[/Quote]

你不会在针对release做debug吧?如果是这样的话,神马情况皆有可能。
开心的卡夫卡 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]
重建所有
[/Quote]
已经重建过很多次,发觉问题仍旧依存。
谢谢帮助。
赵4老师 2012-09-25
  • 打赏
  • 举报
回复
重建所有
开心的卡夫卡 2012-09-25
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 tongzhipeng5699 的回复:]
清空的时候是用memset吗? 这样情况的话, 应该都是0了。
赋值不成功的问题不清楚。
[/Quote]

是的如下


void *zalloc(size_t size)
{
void * ret;

if ((ret = (void *)malloc(size)) != NULL)
{
memset(ret, 0, size);
}

return(ret);

}

以上是清空内存。谢谢你的帮助;
tongzhipeng5699 2012-09-25
  • 打赏
  • 举报
回复
清空的时候是用memset吗? 这样情况的话, 应该都是0了。
赋值不成功的问题不清楚。
开心的卡夫卡 2012-09-25
  • 打赏
  • 举报
回复
求助,谢谢!
ddcelf 2012-09-25
  • 打赏
  • 举报
回复
可以调试,那就汇编跟一下,这种简单的赋值应该看得懂。
如果还有困难,查看内存:config地址和(*config).iloader地址,然后单步,把这两个值发生变化那段汇编贴上来。
通过本课程学习您可以学习到Dart语言如下知识:第1章 Dart语言概述:Dart语言简介、Dart语言支持平台开发、Flutter为什么选择Dart语言。第2章 开发环境搭建:下载Dart SDK、Windows下安装Dart SDK、macOS下安装Dart SDK、Visual Studio Code开发工具、IntelliJ IDEA开发工具。第3章 完成个Dart程序:动动手写一个HelloWorld、Dart源代码文件组织结构、Visual Studio Code调试Dart代码、IntelliJ IDEA调试Dart代码。第4章 Dart语法基础:标识符、关键字、变量、常量、注释、库。第5章 Dart数据类型:数值类型、字符串、数据类型相互转换、布尔类型和枚举类型第6章 运算符:算术运算符、算术赋值运算符、关系运算符、逻辑运算符、位运算符、条件运算符、类型检查运算符。第7章 控制语句:分支语句、循环语句、跳转语句。第8章 函数:函数声明、可选参数、头等函数(first-class function)、匿名函数。第9章 类:类声明、getter和setter访问器、构造函数、静态变量和静态方法、级联符号。第10章 继承与多态:Dart中的继承实现、调用父类构造函数、成员变量的覆盖(Override)、方法的覆盖(Override)、多态、混入(Mixins)。第11章 抽象类与接口:抽象类、接口、Dart中隐式接口、实现接口。第12章 数据容器:List容器、Set容器、Map容器、泛型。第13章 异常处理:捕获异常、try-on捕获异常、try-catch捕获异常、try-on-catch捕获异常、使用finally代码块、手动抛出异常、自定义异常类。第14章 异步编程:Dart异步处理机制、案例:同步函数实现读取文件、案例:异步函数实现读取文件、Future对象。  

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧