打印
[C语言]

关于keil c51下的malloc 内存分配问题

[复制链接]
7822|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
写了一个很简单的程序如下:
void sp_set()
{ SCON=0X50;
  TMOD=0X20;
  TCON=0X40;
  TH1=0XFD;
  TI=1;
  TR1=1;
}
void main()
{ char  a[7]={'a','b','c','d','e','f','\0'};
  char *p=NULL;
  p=(char*)malloc(10*sizeof(char));
  memset(p,'k',3*sizeof(char));
  sp_set();     //串口设置
  if(1==TI)
  {if(NULL!=p)
  printf("code:%s\n",p);
   else
  printf("code:%s\n",a);
  }
}
为什么分给p的内存和数组a重合了呢???
输出结果也是数组a的前三个元素被memset()函数的赋值给覆盖了  为什么会这样啊?

相关帖子

沙发
ayb_ice| | 2014-7-10 16:37 | 只看该作者
需要初始化内存池的

使用特权

评论回复
板凳
ayb_ice| | 2014-7-10 16:39 | 只看该作者
RT:

未命名.PNG (13.14 KB )

未命名.PNG

使用特权

评论回复
评论
tianqi911 2020-4-28 17:56 回复TA
还是大佬给力 
地板
coody| | 2014-7-10 18:21 | 只看该作者
51我一般不建议使用动态内存分配

使用特权

评论回复
5
幸福至上| | 2014-11-27 12:33 | 只看该作者
coody 发表于 2014-7-10 18:21
51我一般不建议使用动态内存分配

你好,在Keil中调用malloc确实有时候会出现异常问题,如果不调用的话,在一个子程序中,如果调用的子程序太多,那么还可能造成占用太多的RAM空间啊,而有些函数又是必须通过不断调用其他的子函数来实现的。请问此情况下,怎么解决会比较好呢?

使用特权

评论回复
6
幸福至上| | 2014-11-27 12:40 | 只看该作者
幸福至上 发表于 2014-11-27 12:33
你好,在Keil中调用malloc确实有时候会出现异常问题,如果不调用的话,在一个子程序中,如果调用的子程序 ...

我也是用51做一个设计的。要进行一个较为复杂的运算,其中会调用很多子函数,每个子函数中都有不少局部变量。MCU已经固定了,没法更改的。:)

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

12

主题

28

帖子

1

粉丝