当你决定学习「内存」,你已然超越了 99% 的程序员!
程序是在内存中运行的,一名合格的程序员必须了解内存,学习C语言是了解内存布局的最简单、最直接、最有效的途径,C语言简直是为内存而生的,它比任何一门编程语言都贴近内存。
本专题将为你解开以下谜团:
-
C语言中使用的地址为什么是假的,计算机又是如何通过假的地址访问到真实的物理内存的?
-
一个C语言程序在内存中是如何分布的?函数放在哪里?变量放在哪里?字符串放在哪里?
-
为什么全局变量在整个程序中都可以使用,而局部变量只能在函数内部使用?
-
一个C语言程序可以使用多大的内存?
-
操作系统和用户程序之间是如何协作的?
-
堆和栈都是什么,它们在程序运行过程中起到什么作用?为什么栈内存的分配效率要高于堆?
-
栈溢出是怎么回事,如何利用栈溢出进行攻击?
-
内存泄漏、野指针、非法内存访问、段错误都是怎么产生的?
-
内存池、线程池、连接池等这些莫名其妙的“池子”是怎么回事?