C语言中结构体在内存中的存储方式?

看例子:main.cppinta=0;全局初始化区char*p1;全局未初始化区main(){intb;栈chars[]="abc";栈char*p2;栈char*p3=... 看例子:
main.cpp
int a = 0; 全局初始化区
char *p1; 全局未初始化区
main()
{
int b; 栈
char s[] = "abc"; 栈
char *p2; 栈
char *p3 = "123456"; 123456\0在常量区,p3在栈上。
static int c =0; 全局(静态)初始化区
p1 = (char *)malloc(10); 堆
p2 = (char *)malloc(20); 堆
}

这是C中变量储存情况, 那么定义一个结构体,结构体内部成员有各种类型,它是什么储存方式呢? 它的内存连续吗

看资料上说“堆”内存不连续,可用malloc()函数申请 ,能否具体说明如何不连续法吗,假设堆中有一个地址0X1000,那么它的下一个地址不一定是0X1001,是这样吗?
傲世修罗王 能说的具体点吗,谢谢。
展开
 我来答
帅哥联盟CEO
2010-02-03 · TA获得超过753个赞
知道小有建树答主
回答量:181
采纳率:0%
帮助的人:142万
展开全部
malloc本身申请的内存是连续的,比如malloc(11),他申请了11个连续的内存单元。

你说的“‘堆’内存不连续”,这句话很笼统,那要看那个‘堆’具体是如何实现的。你可是设计一个连续内存的堆,也可以设计链表类型的堆

c中变量的存储方式,最终是由编译器决定的,不同的语言,组织方式都不一样。
--------------------------------
想有深入的理解,可以学习汇编,观察汇编程序最终生成的执行文件,内存使用和组织方式。。。之后,心里基本就有低了。。这些一句话解释不清,还有一个漫长的学习过程
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式