OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3966|回复: 2

动态内存分配异常问题如何查找什么问题

[复制链接]

25

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
468
金钱
468
注册时间
2017-6-10
在线时间
66 小时
发表于 2020-3-2 11:45:23 | 显示全部楼层 |阅读模式
本帖最后由 明天,你好 于 2020-3-2 14:15 编辑

1.各位大神,我利用动态内存分配的空间创建数组,我仿真了三个数组的起始地址和末地址,地址没有重复,但是其中两个较小的数组会被初始化为另外一个数组的部分内容,有什么好的解决办法吗?下面是我申请的数组,前两个内存空间大小是120,第三个是16000.
u16 *TCPSimSlaveSRegInBuf;                 //Modbus 输入寄存器   功能码 04
u16 *TCPSimSlaveSRegHoldBuf;                //Modbus 保持寄存器   功能码 03  16
u16 *TCPSimSlavesRFuc71Buf;      //Modbus 自定义寄存器  功能码 71
下面是我申请内存的部分程序:调试发现和“TCPSimSlavesRFuc71Buf”数组申请内存的顺序有关,只要把这个数组内存申请的语句放到其余两个之前,则不回出现异常。下面的程序顺序,“TCPSimSlaveSRegHoldBuf”数组是正常的,“TCPSimSlaveSRegInBuf”是异常的。
//输入寄存器的数量申请了120个
    TCPSimSlaveSRegInBuf     = mymalloc(SRAMEX,SimSlaveSRegInBufMaxNum);//------申请内存 Modbus输入寄存器   功能码 04
    if(TCPSimSlaveSRegInBuf == NULL){
        return 1 ;//--------------------内存申请失败了,直接退出
    }
    /*初始化 数据空间为0*/
    for(i = 0; i < SimSlaveSRegInBufMaxNum ;i++)
    {
        TCPSimSlaveSRegInBuf = 0;
    }
  //申请自定义寄存器的内存空间大小为16000;
    TCPSimSlavesRFuc71Buf   = mymalloc(SRAMEX,SimSlavesRFuc71BufMaxNum);//------申请内存 Modbus自定义寄存器   功能码 66
    if(TCPSimSlavesRFuc71Buf == NULL){
        return 1 ;//--------------------内存申请失败了,直接退出
    }
    /*初始化 数据空间为0*/
    for(i = 0; i < SimSlavesRFuc71BufMaxNum ;i++)
    {
        TCPSimSlavesRFuc71Buf = 0;
    }
   
    //申请保持寄存器的内存空间大小为120;
    TCPSimSlaveSRegHoldBuf   = mymalloc(SRAMEX,SimSlaveSRegHoldBufMaxNum);//------申请内存 Modbus保持寄存器   功能码 03  16
    if(TCPSimSlaveSRegHoldBuf == NULL){
        return 1 ;//--------------------内存申请失败了,直接退出
    }
    /*初始化 数据空间为0*/
    for(i = 0; i < SimSlaveSRegHoldBufMaxNum ;i++)
    {
        TCPSimSlaveSRegHoldBuf = 0;
    }

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

25

主题

84

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
468
金钱
468
注册时间
2017-6-10
在线时间
66 小时
 楼主| 发表于 2020-3-11 08:42:15 | 显示全部楼层
问题已解决,动态内存申请的函数没有理解透彻,是以字节为单位的,而我要存储的变量是16位的,所以造成了内存溢出。
回复 支持 反对

使用道具 举报

0

主题

668

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1926
金钱
1926
注册时间
2021-8-13
在线时间
262 小时
发表于 2021-12-28 15:02:12 | 显示全部楼层

回帖奖励 +1 金钱

学到了  
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 09:30

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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