1 栈区(stack):与数据结构中的栈相似,由编译器自动分配最后自动释放。主要用于储存如下变量:函数的参数值,局部变量值,类似于栈,在内存上显示是地址连续。
2堆区(heap): 这是由程序员申请后分配的地址,不主动释放,可能会有OS回收。
3 全局和静态区:分配内存时类似于链表,内存的地址不连续。全局变量和静态变量存一起,未初始化的放一起。
4 文字常量区。
5 程序代码区。
引出的视频中字符串数组问题:
char word[]=“hello,world”;
char *word =“hello,world”;
第一种,word是个字符串常量的首地址,不能进行++word的运算,本质是个常量;
第二种,word是个指向字符串常量的首地址的指针变量,++word意味着对应地址偏移,可行;
char word[]= {“aa”,“bb”,“cc”,“d”};//定义非法的,不能这么初始化,二维数组才可以这么干吧
char *word[]={“aa”,“bb”,“cc”,“d”};//指向字符串的指针数组。