码迷,mamicode.com
首页 > 编程语言 > 详细

c语言中的堆、栈和内存映射

时间:2018-01-14 15:57:22      阅读:234      评论:0      收藏:0      [点我收藏+]

标签:bubuko   全局变量   log   程序   内存映射   代码   入栈   变量   代码区   

Code Area(代码区):程序代码指令、常量字符串,只可读。

Static Area(静态区):存放全局变量/常量、静态变量/常量。 该区域的大小在程序一加载进内存的时候就已固定,但是静态变量的值是可以改的。

Heap(堆):由程序员控制,使用malloc/free来操作。

Stack(栈):预先设定大小,自动分配与释放。

技术分享图片

例子1:

技术分享图片

例子2:

技术分享图片

栈(stack)的实现原理

技术分享图片

int abc(int a, int b)   //注意:c语言的形参是从右到左入栈的,b先入栈,a后入栈;a先出栈,b后出栈。
{
}
因为c语言是底层语言,包括操作系统本身就是用c语言写的,所以呢,很多时候是这样的:用c语言来写一个库,再用其他语言来调用。
但是呢,不能保证所有的语言都是从右到左入栈的。所以其他语言在调用c语言写的库的时候,要遵循c语言的规范。

例子3

 技术分享图片

c语言中的堆、栈和内存映射

标签:bubuko   全局变量   log   程序   内存映射   代码   入栈   变量   代码区   

原文地址:https://www.cnblogs.com/chenmingjun/p/8283374.html

(1)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!