社区
C++ 语言
帖子详情
51内存分配问题!
lqshui0501
2009-03-22 12:05:43
在学习的TCP/IP的51协议栈的时候有下面定义的变量,不明白什么意思。
请高手指点!
static BYTE DT_XDATA TCPIPBuf[TCPIP_BUF_SIZE];
static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd;
static struct SMemHead DT_XDATA * DT_XDATA MemHeadStart;
...全文
185
5
打赏
收藏
51内存分配问题!
在学习的TCP/IP的51协议栈的时候有下面定义的变量,不明白什么意思。 请高手指点! static BYTE DT_XDATA TCPIPBuf[TCPIP_BUF_SIZE]; static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd; static struct SMemHead DT_XDATA * DT_XDATA MemHeadStart;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
qqwx_1986
2009-03-22
打赏
举报
回复
#define DT_XDATA ?
mfantonidas
2009-03-22
打赏
举报
回复
struct SMemHead型变量的指针MemHeadEnd是static
:)
kingbozhang
2009-03-22
打赏
举报
回复
看来你是用Keil C在进行8051的开发了。
static BYTE DT_XDATA TCPIPBuf[TCPIP_BUF_SIZE];
static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd;
static struct SMemHead DT_XDATA * DT_XDATA MemHeadStart;
跟你讲一个复杂的吧,就以static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd为例。
Keil C将8051的内存区域分成了几个部分:
data ----片内直接寻址ram
idata ----片内间接寻址ram
xdata ----片外ram
code ----片外code
因为8051的内存区域分的比较复杂,导致Keil C在8051下的指针也比较复杂。
指针分为2类:
1. general ptr: 这种指针可以指向每个内存区域,如: int* ptr1--ptr1可以指向任何内存区域
2. memory-specific ptr:这种指针只能指向特定的内存区域,如: xdata int* ptr2--ptr2只能指向xdata区
指针本身也是变量,也占用内存。因此必须指明将指针放在哪个内存区域。
xdata int* data ptr3:ptr3是一个指向xdata区的int型变量的指针,ptr3本身占用的内存在data区。
因此,总结:
static struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd
struct SMemHead DT_XDATA * DT_XDATA MemHeadEnd:MemHeadEnd是一个指向xdata区的SMemHead结构类型的指针,MemHeadEnd本身也放在xdata区。
static跟51没有关系。作业:指针是static,还是struct SMemHead型变量是static?
pengzhixi
2009-03-22
打赏
举报
回复
xdata的定义呢
lqshui0501
2009-03-22
打赏
举报
回复
哦,忘了告诉了
DT_XDATA就是xdata
51
芯片
内存分配
详解(data,xdata,bit,code)和address space overflow
问题
本文结合使用情况,介绍
51
单片机的存储和
内存分配
,以C80
51
F120为例说明各存储器类型的范围和大小。还提及
51
寻址空间及程序超64K时的处理方法。针对address space overflow
问题
,可分析map文件,采用使用小数据类型、优化代码等方法降低内存占用。
谈谈Keil 中C
51
的
内存分配
与优化
本文详细分析了C
51
编译器的
内存分配
策略,澄清了关于内存使用的常见误解。C
51
内存空间有限,采用覆盖和共享技术,内部RAM可达256字节。即使在无变量和函数的情况下,data区也会为寄存器和栈指针分配空间。全局变量和函数调用会影响
内存分配
,局部变量通过优化可能占用通用寄存器。通过实例展示了如何优化内存使用,如避免空洞、合理分配idata和data变量,以及提高局部变量利用率。
Area
51
内存分配
模式识别:常见模式与优化
本文分析了Area
51
游戏引擎中的常见
内存分配
模式,包括单例模式、对象池和内存池,并探讨了内存泄漏检测、碎片优化及线程本地缓存等关键技术。通过性能测试验证,这些优化策略显著提升了
内存分配
效率和系统稳定性,适用于高性能游戏开发场景。
Keil C
51
内存分配
与优化
本文详细介绍了Keil C
51
编译器下单片机
内存分配
原理及优化技巧,包括不同内存模型下的变量存储位置、覆盖技术的应用以及如何减少内存空洞等
问题
。
Keil C
51
中字符串常量
内存分配
优化技巧
本文针对Keil C
51
编译器在80
51
嵌入式开发中字符串常量与指针
内存分配
错位
问题
,深入解析HCONST/HDATA分区机制,提出STRING编译指令与双重const+far声明相结合的标准解决方案,并通过.M
51
映射文件验证效果。内容涵盖指针存储类型、内存空间修饰符(near/far/huge)、__code关键字、混合访问技巧及跨版本兼容性策略,聚焦提升代码分页下的稳定性与执行效率。
C++ 语言
65,211
社区成员
250,514
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章