3385|9

290

帖子

0

TA的资源

纯净的硅(初级)

楼主
 

动态内存分配 [复制链接]

典型的内存分配的使用方法:
unsigned char *buf;

buf=(unsigned char*)malloc(512*sizeof(unsigned char));  //生成一个堆栈内存

free(buf);  //释放内存

在CCS5.3的设置中,你并没有分配堆的内存,所以需要进行手动设置。需要修改的地方一共两处
(1)properties 的C2000 basic的设置修改
(2)修改.CMD文件,添加.system的内存段   /* Allocate uninitalized data sections: */
   .stack              : > RAMM0        PAGE = 1
   .ebss               : > DRAML0       PAGE = 1
   .esysmem            : > DRAML0       PAGE = 1
   .sysmem            : > DRAML0       PAGE = 1

0334.Image00001.bmp (821.02 KB, 下载次数: 7)

0334.Image00001.bmp

最新回复

在dsp上,说不上动态内存分配的,编译器并不是支持所有的C操作。。。  详情 回复 发表于 2013-11-2 09:34

点评

不错的资料,不过不能算动态,因为不能回收  详情 回复 发表于 2013-10-24 21:50
 
点赞 关注

回复
举报

4005

帖子

0

TA的资源

版主

沙发
 

回复 楼主liuming759 的帖子

不错的资料,不过不能算动态,因为不能回收

点评

free()之后不就将内存回收了吗?请指教。:) 引用网络的帖子: [p=26, null, left]“The word static refers to things that happen at compile time and link time when the program is constructed—as oppose  详情 回复 发表于 2013-10-24 22:26
 
 

回复

290

帖子

0

TA的资源

纯净的硅(初级)

板凳
 

回复 沙发huo_hu 的帖子

free()之后不就将内存回收了吗?请指教。

引用网络的帖子:

“The word static refers to things that happen at compile time and link time when the program is constructed—as opposed to load time or run time when the program is actually started.”

“The term dynamic refers to things that take place when a program is loaded and executed. ”



内存的静态分配和动态分配的区别主要是两个:

一是时间不同。静态分配发生在程序编译和连接的时候。动态分配则发生在程序调入和执行的时候。

二是空间不同。堆都是动态分配的,没有静态分配的堆。栈有2种分配方式:静态分配和动态分配。静态分配是编译器完成的,比如局部变量的分配。动态分配由函数malloc进行分配。不过栈的动态分配和堆不同,他的动态分配是由编译器进行释放,无需我们手工实现。  



[ 本帖最后由 liuming759 于 2013-10-24 14:30 编辑 ]

点评

这个是你不?https://bbs.eeworld.com.cn/thread-416690-1-3.html  详情 回复 发表于 2013-10-25 11:59
没用过....  详情 回复 发表于 2013-10-25 10:55
 
 
 

回复

4005

帖子

0

TA的资源

版主

4
 

回复 板凳liuming759 的帖子

没用过....

点评

嗯,斑竹,我大言不惭了,请见谅。  详情 回复 发表于 2013-10-25 22:43
 
 
 

回复

2万

帖子

71

TA的资源

管理员

5
 
原帖由 liuming759 于 2013-10-24 22:26 发表
free()之后不就将内存回收了吗?请指教。

引用网络的帖子:

“The word static refers to things that happen at compile time and link time when the program is constructed—as opposed ...

这个是你不?https://bbs.eeworld.com.cn/thread-416690-1-3.html
加EE小助手好友,
入技术交流群
EE服务号
精彩活动e手掌握
EE订阅号
热门资讯e网打尽
聚焦汽车电子软硬件开发
认真关注技术本身

点评

嗯,对的,我都忘了,谢谢soso姐提醒。  详情 回复 发表于 2013-10-25 22:59
 
个人签名

加油!在电子行业默默贡献自己的力量!:)

 
 

回复

2856

帖子

260

TA的资源

五彩晶圆(高级)

6
 
这个谈不上“动态内存分配”吧。
CMD已经把一段固定地址划拨给了“堆栈内存”。其他变量或者程序不能放到这段地址里面。即使当前出现没有堆栈,这段地址也不能它用。所以谈不上“动态内存分配”。

举个例子吧,仓库里面有好多小房子,把其中一个房子划给看管仓库的用。那么不管那个看管仓库的有没有向那个房子里面放东西,放多少?仓库的货物是不能在放到那个房子里面的。相当于仓库容积=仓库总面积— 划给看管仓库的用房子。

点评

嗯,明白了。那如何实现动态内存的分配还是这个概念本身就是比较混淆的。  详情 回复 发表于 2013-10-25 22:42
 
 
 

回复

290

帖子

0

TA的资源

纯净的硅(初级)

7
 

回复 6楼ltbytyn 的帖子

嗯,明白了。那如何实现动态内存的分配还是这个概念本身就是比较混淆的。
 
 
 

回复

290

帖子

0

TA的资源

纯净的硅(初级)

8
 

回复 4楼huo_hu 的帖子

嗯,斑竹,我大言不惭了,请见谅。
 
 
 

回复

290

帖子

0

TA的资源

纯净的硅(初级)

9
 

回复 5楼soso 的帖子

嗯,对的,我都忘了,谢谢soso姐提醒。
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(中级)

10
 

在dsp上,说不上动态内存分配的,编译器并不是支持所有的C操作。。。

在dsp上,说不上动态内存分配的,编译器并不是支持所有的C操作。。。
 
个人签名我的新书:《TMS320F2833x DSP应用开发与实践》
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表