C语言中的堆、栈和内存映射!
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
“我告诉你一个秘密,一般人我都不说的,看你与我有缘不妨就告诉你吧,你想成为一名优秀的程序员吗?有个特别好的地方,里面好多大佬,说话又好听!”
“哪里啊?我也想让别人叫我大佬!可以吗?”
“想知道啊!就在下面自己加!”
某大佬:“我是一名从事了10年开发的老程序员,最近我花了一些时间整理关于C语言、C++,自己有做的材料的整合,一个完整的学习C语言、C++的路线,学习材料和工具。全球最大的C/C++爱好者就在我这里,企鹅裙进(<C语言C++编程学习14>)。这里是编程爱好者的聚集地,欢迎初学和进阶中的小伙伴。希望你也能凭自己的努力,成为下一个优秀的程序员。工作需要、感兴趣、为了入行、转行需要学习C/C++的伙伴可以跟我一起学习!”
关注我,带你遨游代码的世界!
最后分享一张C/C++学习路线图给爱学习的小伙伴们