打印

KEYWORD:分配内存,指针

[复制链接]
2164|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
lastnew|  楼主 | 2007-9-21 12:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
unsigned char idata *pRamEnd;           //指向RAM最高

unsigned char idata *Memory_Malloc(unsigned char MSize)
{                    //分配内存
    pRamEnd-=MSize;
    return pRamEnd;
}

这是我根据所长大人的思路写的,现在有个问题,请各位帮忙下

从上面可以知道pRamEnd是从高地址往低地址,现在假如我分配一个struct,那么返回给struct变量的指针指向的是所分配空间的低地址,现在我想知道的是如果让系统分配这个struct,即直接struct ??   Ineed;这里的Ineed也是指向这个struct变量内存空间的低地址吗?

如果是可以**.**引用变量内部变量的话,这个问题可能。。。。

相关帖子

沙发
computer00| | 2007-9-21 12:59 | 只看该作者

C语言对数组,结构体等都是从小地址往上增长的吧?

使用特权

评论回复
板凳
lastnew|  楼主 | 2007-9-21 13:02 | 只看该作者

To:圈圈

恩,这里是手动给变量分配内存啊

麻烦圈圈东东脑筋,教教我^_^

使用特权

评论回复
地板
computer00| | 2007-9-21 13:06 | 只看该作者

那你倒过来分配呀,从低地址开始分配.

我的ARM 00 OS里面的内存分配就是从低地址开始的.

当然了,你分配到了一块内存,并且你也知道它的大小,求出首地址也很容易啊。

使用特权

评论回复
5
ayb_ice| | 2007-9-21 14:56 | 只看该作者

51用这玩意儿太不划算了...

使用特权

评论回复
6
lastnew|  楼主 | 2007-9-21 17:31 | 只看该作者

To:圈圈

不好意思,我忘了一点说明:这是51里分配内存,51堆栈是向0xFF生成的

另外,要找到struct的首地址容易,可是系统自动分配的struct变量名就是这个存储区的首址么,这是我最想知道的。。。

麻烦圈圈再想想看,教教我^_^

使用特权

评论回复
7
computer00| | 2007-9-21 23:22 | 只看该作者

struct变量名的地址就是这个存储区的首址.

使用特权

评论回复
8
lastnew|  楼主 | 2007-9-22 12:23 | 只看该作者

结帖

昨天下午仔细看了C51 user关于指针的部分,keil中的malloc.c也看了,对次问题已经了解

再次感谢O.O同志

使用特权

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

本版积分规则

62

主题

352

帖子

0

粉丝