OpenEdv-开源电子网

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

战舰mymalloc在double数组赋值问题

[复制链接]

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-5-19
在线时间
23 小时
发表于 2020-6-17 11:37:20 | 显示全部楼层 |阅读模式
3金钱
本帖最后由 themuder 于 2020-6-18 13:37 编辑

int k = 0;
whilte(1){
  double *pts;
  pts =mymalloc(1,38400*sizeof(double));  //1 = SRAMEX
  for (i = 0; i < 120; i++) {
    for (jj = 0; jj < 160; jj++) {
      pts[k] = (double)1.0 + (double)i;
      pts[19200 + k] = (double)1.0 + (double)jj;
      k++;
    }
  }

  myfree(1,pts);
}

在未添加红字回圈前都能运行,而添加红字回圈后运行几秒后则停住。

尝试过下文改成 pts = (double *) mymalloc(1,38400*sizeof(double))一样运行几秒后卡死。
动态内存分配怎样分配double型数组模式?
http://www.openedv.com/forum.php ... 8009&fromuid=266288
(出处: OpenEdv-开源电子网)


若改成u8数组又可以运行,但我需要double数组来运算啊


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

使用道具 举报

3

主题

808

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3888
金钱
3888
注册时间
2017-3-7
在线时间
1694 小时
发表于 2020-6-17 14:57:31 | 显示全部楼层
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-5-19
在线时间
23 小时
 楼主| 发表于 2020-6-17 15:36:46 | 显示全部楼层

我动态内存申请在外部sram中,应该不至于堆栈溢出吧?
如果没加回圈,也没有溢出的问题。
在想原子哥的mymalloc()到底能否申请double数组。
malloc.c中的第18行
__align(32) u8 mem2base[MEM2_MAX_SIZE] __attribute__((at(0X68000000)));
"u8 mem2base"是不是决定了只能分配u8数组的关系?
回复

使用道具 举报

21

主题

2205

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
5141
金钱
5141
注册时间
2014-8-26
在线时间
1317 小时
发表于 2020-6-17 17:28:21 | 显示全部楼层
找个时间测一下
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-18 01:17:04 | 显示全部楼层
printf  i和jj出来,看是在哪一个i,和哪一个jj死掉的,然后直接写一行代码 if i=死掉值,jj=死掉值, printf一个数据,然后仿真到printf位置,看pts的值是不是合法的。
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
957
金钱
957
注册时间
2014-11-2
在线时间
370 小时
发表于 2020-6-18 08:43:10 来自手机 | 显示全部楼层
看不到k的初始值,很难判断
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-5-19
在线时间
23 小时
 楼主| 发表于 2020-6-18 13:38:02 | 显示全部楼层
way2888 发表于 2020-6-18 08:43
看不到k的初始值,很难判断

已经补上于第一行 int k = 0;
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-5-19
在线时间
23 小时
 楼主| 发表于 2020-6-18 13:43:00 | 显示全部楼层
本帖最后由 themuder 于 2020-6-18 17:28 编辑
正点原子 发表于 2020-6-18 01:17
printf  i和jj出来,看是在哪一个i,和哪一个jj死掉的,然后直接写一行代码 if i=死掉值,jj=死掉值, prin ...

加上红色回圈后,整个while回圈能够执行几遍,几遍后死掉。
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-19 01:44:03 | 显示全部楼层
themuder 发表于 2020-6-18 13:43
加上红色回圈后,整个while回圈能够执行几遍,几遍后死掉。

不应该,你把pts的值打出来,看看是不是都一样? 理论上都应该一样才对。
然后,你这个i,jj,还是没看出来到底是哪个值死的么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

64

帖子

0

精华

高级会员

Rank: 4

积分
957
金钱
957
注册时间
2014-11-2
在线时间
370 小时
发表于 2020-6-19 04:14:45 来自手机 | 显示全部楼层
肯定会死,k值再次执行已经不是0了
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
103
金钱
103
注册时间
2020-5-19
在线时间
23 小时
 楼主| 发表于 2020-6-27 20:14:54 | 显示全部楼层
本帖最后由 themuder 于 2020-6-27 20:43 编辑
正点原子 发表于 2020-6-19 01:44
不应该,你把pts的值打出来,看看是不是都一样? 理论上都应该一样才对。
然后,你这个i,jj,还是没看 ...

抱歉之前问题叙述可能不够详细,下图左半部份是写在OV7725_camera_refresh(void)内的,在获得320x240资料后二值化成0,1存到ptrCameraFrame数组中,再经过一系列自己写的图像处理函数imageResizeOneHalf(u8 input, u8 output),onePt160x120(u8 input, u8 output),fitIntoLCD(u8 input, u8 output),writeCmdLCD(u8 input, u8 output),Disp(u8 input)。
without.JPG
在右半部份onePt160x120(u8 input, u8 output)中,最下面mymemcpy复制输入数组至输出数组用来确认该函数可行性。最后发现,在上图左半部份,当我在onePt160x120(u8 input, u8 output)函数前若使用动态内存分配,似乎会影响到函数内的动态内存分配,而导致内存溢出?反之,我将函数前的数组全部用静态宣告则可以运行(宣告部份省去),如下图。
with.JPG

也就是说,我在进入onePt160x120之前已经有了ptrLcdFrame及ptrMatlabFrame两个动态数组,进函数后又再分配pts动态数组,虽然在函数内有释放掉pts动态数组。所以猜想mymalloc动态内存分配在函数内及函数外同时使用会导致溢出?如果我想将全部数组使用动态内存分配,是否有更好的方法?

with.JPG
with.JPG
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2020-6-27 21:57:40 | 显示全部楼层
themuder 发表于 2020-6-27 20:14
抱歉之前问题叙述可能不够详细,下图左半部份是写在OV7725_camera_refresh(void)内的,在获得320x240资料 ...

只要你使用的时候,不超过所申请的内存大小,就不会溢出。超过才会溢出。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-17 02:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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