社区导航

 
查看: 1010|回复: 13

[讨论] 程序中变量赋值总是不成功??

[复制链接]

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

发表于 2015-4-21 19:09:46 | 显示全部楼层 |阅读模式
又来向大家请教了。。。程序功能是先对一个信号进行AD采样,得到的数据存入一个数组变量中,然后又要对得到的这些数据进行FFT变换(需将这些数据转换为复数形式),所以另外开辟了一个struct类型变量,(包括实部和虚部),现将AD得到的数组变量值赋给struct类型变量的实部,可是单步调试时就会发现,采到的AD转换后的值并未传入struct变量实部(赋值功能未实现),仅仅是一句赋值语句啊,在这卡了一天了,不知道是什么原因,所以又来这里找大家求助了。。。

回复

使用道具 举报

815

TA的帖子

3

TA的资源

一粒金砂(高级)

Rank: 3Rank: 3

发表于 2015-4-21 20:30:20 | 显示全部楼层
传递不成功,看子函数调用是不是有问题

点评

子函数调用应该是没有问题的,我单步调试的时候,可以跳进去进行赋值语句的执行,但是在查看变量的时候看不到预期结果。。  详情 回复 发表于 2015-4-22 09:34

回复 支持 反对

使用道具 举报

1万

TA的帖子

34

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-4-21 20:31:09 | 显示全部楼层
有编译提示吗?

点评

在单步调试的时候没有编译提示,但全速运行的时候,有时候会出现一句,地址超出允许的范围,  详情 回复 发表于 2015-4-22 09:32

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-22 09:32:42 | 显示全部楼层
dontium 发表于 2015-4-21 20:31
有编译提示吗?

在单步调试的时候没有编译提示,但全速运行的时候,有时候会出现一句,地址超出允许的范围,

点评

这样看来应该是内存不够,发生溢出了  详情 回复 发表于 2015-4-22 10:27

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-22 09:34:14 | 显示全部楼层
machinnneee 发表于 2015-4-21 20:30
传递不成功,看子函数调用是不是有问题

子函数调用应该是没有问题的,我单步调试的时候,可以跳进去进行赋值语句的执行,但是在查看变量的时候看不到预期结果。。

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-22 09:51:19 | 显示全部楼层
会不会是数组越界,RAM不足的问题?

回复 支持 反对

使用道具 举报

3405

TA的帖子

6

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-4-22 10:00:48 | 显示全部楼层
在赋值语句上下写一条简单的赋值语句测试一下这个函数能否正常调用。一般这种情况都是由于一个粗心导致的小错误造成的,很可能是指针指错了位置。

点评

谢谢版主的回答,这个办法之前试过了,现在问题也找到了,是RAM不足导致的。  详情 回复 发表于 2015-4-22 10:20

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-22 10:10:16 | 显示全部楼层
问题找到了,就是因为开辟了较大的数组,导致RAM不足的问题。

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-22 10:20:24 | 显示全部楼层
jishuaihu 发表于 2015-4-22 10:00
在赋值语句上下写一条简单的赋值语句测试一下这个函数能否正常调用。一般这种情况都是由于一个粗心导致的小错误造成的,很可能是指针指错了位置。

谢谢版主的回答,这个办法之前试过了,现在问题也找到了,是RAM不足导致的。

回复 支持 反对

使用道具 举报

1517

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2015-4-22 10:27:31 | 显示全部楼层
singletravel 发表于 2015-4-22 09:32
在单步调试的时候没有编译提示,但全速运行的时候,有时候会出现一句,地址超出允许的范围,

这样看来应该是内存不够,发生溢出了

点评

您好,又遇到问题了,我查看生成的.map文件时,发现RAM使用了还不到一半,这样看来RAM应该足够,可是因为要处理的数据比较多,一旦增加处理的数据量,就又会出现赋值不成功的情况,若减少数据量,就恢复正常,请问这  详情 回复 发表于 2015-4-24 11:19

回复 支持 反对

使用道具 举报

1万

TA的帖子

34

TA的资源

版主

Rank: 6Rank: 6

发表于 2015-4-22 12:02:20 | 显示全部楼层
我询问编译的提示,不是说你在调试时的提示,有时候编译虽然通过了,那也只是表明可以产生运行文件,但并不一定合理,有些给出警告什么的,象这些东西都应该注意才是,至少说先看看这种提示关系大不大

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-24 11:19:56 | 显示全部楼层
bobde163 发表于 2015-4-22 10:27
这样看来应该是内存不够,发生溢出了

您好,又遇到问题了,我查看生成的.map文件时,发现RAM使用了还不到一半,这样看来RAM应该足够,可是因为要处理的数据比较多,一旦增加处理的数据量,就又会出现赋值不成功的情况,若减少数据量,就恢复正常,请问这种情况该怎么解决呢。。谢谢您了~

点评

可能是堆栈太小,堆栈溢出了,关于修改堆栈大小的我没改过,不知道在哪里改,你在论坛里搜一下看看有没有可以参考的例子或者资料的  详情 回复 发表于 2015-4-24 13:05

回复 支持 反对

使用道具 举报

1517

TA的帖子

0

TA的资源

五彩晶圆(初级)

Rank: 7Rank: 7Rank: 7

发表于 2015-4-24 13:05:16 | 显示全部楼层
singletravel 发表于 2015-4-24 11:19
您好,又遇到问题了,我查看生成的.map文件时,发现RAM使用了还不到一半,这样看来RAM应该足够,可是因为要处理的数据比较多,一旦增加处理的数据量,就又会出现赋值不成功的情况,若减少数据量,就恢复正常,请问这种情况该怎么解决呢。。谢谢您了~

可能是堆栈太小,堆栈溢出了,关于修改堆栈大小的我没改过,不知道在哪里改,你在论坛里搜一下看看有没有可以参考的例子或者资料的

点评

嗯,感谢。  详情 回复 发表于 2015-4-24 14:11

回复 支持 反对

使用道具 举报

74

TA的帖子

0

TA的资源

一粒金砂(中级)

Rank: 2

 楼主| 发表于 2015-4-24 14:11:59 | 显示全部楼层
bobde163 发表于 2015-4-24 13:05
可能是堆栈太小,堆栈溢出了,关于修改堆栈大小的我没改过,不知道在哪里改,你在论坛里搜一下看看有没有可以参考的例子或者资料的

嗯,感谢。

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456

GMT+8, 2017-6-26 06:33 , Processed in 0.456644 second(s), 25 queries , Redis On.

快速回复 返回顶部 返回列表
关闭