1.栈区:存放函数的参数和局部变量
堆区:由程序员分配(动态内存分配),用new分配内存,delete[]释放内存
全局数据区(static):全局变量,静态变量(静态变量的使用区域受到限制)
常量区:常量字符串
代码区:函数体(类的成员函数,全局函数)的二进制代码
2.使用动态内存的原因
(1)按需分配内存
(2)被调用函数外需要使用被调用函数内部的指针对应的地址空间
(3)不限于栈区内存,给程序分配更多的内存
3.内存拷贝函数(需要包含头文件<string.h>)
void *memcpy(void*dest,const void*src,size_t n);
从src所指的内存地址起始位置开始拷贝n个字节(而不是多少个整数或者字符)到目标dest所指的内存地址的起始位置中
4.c语言中动态内存分配用malloc()(该函数包含在头文件<stdlib.h>中.),malloc返回的地址是void*的,如果要用int*接收,需要强制转化
void *malloc(size_t size);
malloc在内存动态存储区分配一块长度为size字节的连续区域,并返回该区域的首地址
c语言用free()释放内存:
void free(void*);
注:malloc和free不适用于面向对象的编程,所以尽量使用new和delete,而不是malloc和free