有人说嵌入式编程由于内存不够,且不易控制,一般不用malloc来分配内存,而尽量用数组,有道理吗?

炼气士 2012-03-13 09:58:35
如题
...全文
411 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Defonds 2012-03-14
  • 打赏
  • 举报
回复
开发效率和执行效率总是相互矛盾。
lily0628 2012-03-14
  • 打赏
  • 举报
回复
内存问题。。
头疼啊
nice_cxf 2012-03-14
  • 打赏
  • 举报
回复
不一定,不能频繁使用malloc,一般用内存池或在初始化的时候用malloc分配好
赵4老师 2012-03-14
  • 打赏
  • 举报
回复
//使用动态分配
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
int i,L;
char *p;
void main() {
for (i=0;i<20000;i++) {
L=rand();
p=malloc(L);
if (NULL==p) {
printf("malloc error!\n");
continue;
}
memset(p,0,L);
free(p);
}
}
//不使用动态分配
#include <stdio.h>
#include <stdlib.h>
#include <memory.h>
#define MAXLEN 30000
int i,L;
char buf[MAXLEN];
char *p;
void main() {
p=&buf[0];
for (i=0;i<20000;i++) {
L=rand();
if (L>MAXLEN) {
printf("L>MAXLEN==%d, ignore spilth.\n",MAXLEN);
L=MAXLEN;
}
memset(p,0,L);
}
}
赵4老师 2012-03-14
  • 打赏
  • 举报
回复
动态内存分配会导致内存碎片,内存碎片会导致系统崩溃。
logiciel 2012-03-14
  • 打赏
  • 举报
回复
MISRA (The Motor Industry Software Reliability Association 汽车工业软件可靠性联会)C语言编程规范:
Rule 118. 禁止使用动态堆分配(也就是不得使用malloc, calloc和realloc)。
quwei197874 2012-03-13
  • 打赏
  • 举报
回复
动态分配还有一个分配时出错,抛出badalloc的问题
muyi66 2012-03-13
  • 打赏
  • 举报
回复
用数组岂不是更加耗费内存了?

降低内存消耗的办法是要控制对内存的使用,不浪费它。设计合理的动态数据结构更能节省内存。
AnYidan 2012-03-13
  • 打赏
  • 举报
回复
在低端MCU上确实没见过动态分配内存的

69,382

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧