开拓地盘

 
早上上班的时候,领爹下楼,告诉他如何开门,防止爹娘在家闷的慌,出去了却回不来。
下班回来,我问爹娘的第一句就是今天怎么过的,去什么地方去了,娘说吃的面条。爹给我讲他们开拓的地盘。
爹说他们吃完早饭后就出来了,向西走到头,向东也走到头了,然后到了有不少人玩的地方,后来到了一个拐角处,那里有不少的水桶,感觉比较远了就不敢再走了,怕迷了路,就回来了。
我想了想,其实爹娘走的并不远,于是就告诉他们了,娘说,不能走远呢,迷了路就给你添麻烦了。爹接着说,日子长着呢,慢慢开拓。
 
娘这两天来一直自卑情节,这从她说话和办事的行动上能看出来。我下班到家的时候,老婆正在做饭,娘在很远的地方看着,也不坐下来,就那样站着。聊完上面的话后,娘说她想帮着做饭,可是不懂得这边的规矩,怕做不好,又加上年龄大了,手上都是老浆子,把我们嫌脏。娘说这些话的时候感觉很卑微,可她不知道,她无论做什么她都是我的娘,她做的什么我都会感觉好吃的。我给娘说你要想做就试着做,好坏我们都愿意吃,娘说她已经很久没有炒过菜了,怕做不好。还是很胆怯的样子。
 
其实我从内心讲不想让娘再为我操劳了,我也不想让她做什么事情。可是娘总觉得不做些事情不好意思,可她又怕做不好我和老婆会说她,我能感觉到她很矛盾,可我不知道该怎么让她明白,我让他们过来,只是想让他们享福,如果他们闲不下来可以找些事情做,但做好做坏都没有关系,只要他们觉得舒坦就好。
 
### C语言内存分配与区域划分 C语言程序在运行过程中会占用一定的内存资源,这些资源按照功能被划分为不同的区域。以下是关于C语言内存分配及其地址空间的具体概念: #### 1. 虚拟内存地址空间 在一个典型的32位系统中,进程拥有 **4GB 的虚拟内存地址空间**[^1]。其中: - **0 ~ 3GB**: 用户空间 这部分用于存储用户的代码、数据以及动态分配的内存。 - **3GB ~ 4GB**: 内核空间 此区域供操作系统内核使用。 #### 2. 用户空间的内存布局 从低地址到高地址方向,用户空间可以进一步细分为以下几个主要区域[^1]: - **代码区 (Text Section)**: 存储已编译后的机器指令,通常是只读的,防止意外修改。 - **数据区 (Data Section)**: 包括全局变量和静态变量。又可分为初始化的数据段(Initialized Data Segment)和未初始化的数据段(Uninitialized Data Segment, BSS)。前者保存具有初始值的全局/静态变量,后者则默认初始化为零。 - **堆区 (Heap)**: 动态分配的内存区域,通常通过 `malloc` 或 `calloc` 函数申请并返回给调用者。该区域由程序员负责管理,手动释放不再使用的内存以避免泄露。 - **栈区 (Stack)**: 自动分配和回收的小型局部变量所在的地方。每当进入一个新的作用域(比如函数),都会创建一个对应的栈帧;离开时自动清理掉相关内容。 - **堆栈缓冲区 & 栈顶指针**: 额外提到的是,在某些实现里还存在专门用来处理溢出保护等问题的小范围预留位置。 #### 3. 堆 vs 栈的区别 尽管两者都属于可变大小的内存块,但它们之间存在着显著差异[^3]: | 特性 | 堆 | 栈 | |------------------|------------------------------|-------------------------------| | 生命周期 | 明确指定 | 和当前执行上下文绑定 | | 访问方式 | 必须借助指针 | 可直接利用名称索引 | | 分配效率 | 较慢 | 极快 | | 安全隐患风险 | 更大(易发生越界写入等错误)| 小 | #### 示例代码展示如何操作堆和栈上的对象: ```c #include <stdio.h> #include <stdlib.h> int main(){ int stackVar = 10; //位于栈上 int* heapPtr; heapPtr=(int*)malloc(sizeof(int)); if(heapPtr != NULL){ *heapPtr=20;//位于堆上 } printf("Value on Stack:%d\n",stackVar); printf("Value on Heap :%d\n",*heapPtr); free(heapPtr); //记得释放堆内存! return 0; } ``` #### 关于具体实例解析 对于下面几种情况下的变量存放位置进行了总结[^4]: - 全局变量始终处于数据段; - 局部 static 类型同样定位于数据段; - 字符串常量虽然定义在其指向变量所在的栈区内,但是实际字符序列本身却存在于只读数据段之中; - 使用 new/malloc 创建出来的任何东西都将归属于堆范畴之内。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值