标题:请教一个内存分配问题。
只看楼主
camelbupt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-28
 问题点数:0 回复次数:4 
请教一个内存分配问题。
示例如下:
#bash-3.2# cat te.c
#include "stdio.h"
int main()
{
        int k=20,i=10;
        char m[]="camel";
        char *p="hello world!";
        printf("%p,%p,%p,%p,%p,%p\n",&k,&i,m,&p,p,p+1);
        return 0;
}
bash-3.2# ./program
0xbfb69c30,0xbfb69c2c,0xbfb69c26,0xbfb69c20,0x8048500,0x8048501

在运行输出中,0xbfb69c2c与0xbfb69c26相差6个字节,0xbfb69c26与0xbfb69c20相差也是6个字节,为什么会存在两个???第一项应该相差4字节才对阿???
不解。。。。
清高手赐教阿。
搜索更多相关主题的帖子: 内存 分配问题 
2008-01-01 20:19
ioriliao
Rank: 7Rank: 7Rank: 7
来 自:广东
等 级:贵宾
威 望:32
帖 子:2829
专家分:647
注 册:2006-11-30
得分:0 
#include <stdio.h>
int main(void)
{
        int k=20,i=10;
        char m[]="camel";
        char *p="hello world!";
        //printf("%p,%p,%p,%p,%p,%p\n",&k,&i,m,&p,p,p+1);

        printf("k=%d,i=%d,m=%d,p=%d",sizeof(k),sizeof(i),sizeof(m),sizeof(p));
        system("pause");
        return 0;
}
2008-01-01 20:34
cosdos
Rank: 9Rank: 9Rank: 9
来 自:ShangHai
等 级:蜘蛛侠
威 望:6
帖 子:2109
专家分:1385
注 册:2007-6-19
得分:0 

它们就是这样存放在内存中的你有意见吗!

—>〉Sun〈<—
2008-01-01 20:41
camelbupt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-28
得分:0 
呵呵,只是看不懂为什么心里闷的慌

0xbfb69c30是变量k的地址,那分配给变量k的4个字节是往地址数大的方向呢?还是往地址数小的方向分配???
2008-01-01 20:46
camelbupt
Rank: 1
等 级:新手上路
帖 子:44
专家分:0
注 册:2007-9-28
得分:0 
没人能解释一下吗???
2008-01-01 21:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-195378-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.050171 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved