[C语言] 关于keil c51下的malloc 内存分配问题

[复制链接]
8544|8
 楼主| ss掷弹专业 发表于 2014-7-10 16:24 | 显示全部楼层 |阅读模式
写了一个很简单的程序如下:
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:

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

评论

还是大佬给力  发表于 2020-4-28 17:56
coody 发表于 2014-7-10 18:21 | 显示全部楼层
51我一般不建议使用动态内存分配
幸福至上 发表于 2014-11-27 12:33 | 显示全部楼层
coody 发表于 2014-7-10 18:21
51我一般不建议使用动态内存分配

你好,在Keil中调用malloc确实有时候会出现异常问题,如果不调用的话,在一个子程序中,如果调用的子程序太多,那么还可能造成占用太多的RAM空间啊,而有些函数又是必须通过不断调用其他的子函数来实现的。请问此情况下,怎么解决会比较好呢?
幸福至上 发表于 2014-11-27 12:40 | 显示全部楼层
幸福至上 发表于 2014-11-27 12:33
你好,在Keil中调用malloc确实有时候会出现异常问题,如果不调用的话,在一个子程序中,如果调用的子程序 ...

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

本版积分规则

12

主题

28

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部