c语言字符指针分配内存,关于指针内存分配问题

本文介绍了C语言中内存的三种类型:静态存储区、栈存储区和堆存储区。详细讨论了指针变量的内存分配,包括静态、栈上和堆上的分配方式,并通过示例解释了指针变量如何指向不同存储区的变量。强调了栈上分配的内存会在函数返回时自动释放,而堆上分配的内存需要手动使用`free`释放。
摘要由CSDN通过智能技术生成

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

程序的可用内存有三种:静态存储区、栈存储区、堆存储区。静态存储区是全部变量和static变量占据的,在程序开始运行之前就分配好了,它们从不释放;栈存储区在函数调用前分配,函数调用返回时释放;而堆存储区的分配释放完全在程序员手中,你用malloc/free进行分配与释放。

每个变量都要有它的内存分配,如:

static int global_var;

即是在静态存储区分配一个整型变量;而

void func(void)

{

char local_var;

...

}

则是在栈存储区分配一个字符变量。

结构体并没有什么不同,设有结构体定义:

struct stu

{

char sex;

long num;

};

则下面的定义:

static struct stu a;

将在静态存储区分配一个结构体变量,大小为sizeof(struct stu);同样地,

void func(void)

{

struct stu b;

...

}

则是在栈存储区分配一个结构变量,大小也为sizeof(struct stu)。

对于指针,情况有些微妙,难以理解。指针变量本身,它也可以有上面三指分配:如

static char *c;

在静态存储区

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值