目录
1. C
1.1. 内存操作函数 概述
- 分配内存
- void *malloc(size_t size);
- void *calloc(size_t nmemb, size_t size);
- void *realloc(void *ptr, size_t size);
- 释放内存
- void free(void *ptr)
- void *memset(void *s, int c, size_t n);
- void *memcpy(void *dest, const void *src, size_t n);
- memmove()
- int memcmp(const void *s1, const void *s2, size_t n);
1.2. malloc函数
- 分配成功,返回被分配内存空间的 指针; 不然,返回NULL;
- malloc分配的内存大小 至少为参数所指定的字节数;
- malloc需要 我们自己计算字节数,并且返回的时候要强转成指定类型的指针。
int *p; p = (int *)malloc(sizeof(int)); // new 分配 -- 返回指定类型的指针,并自动计算所需要的的大小; int *p; p = new int;//返回类型为int* ,分配的大小是sizeof(int) p = new int[100];//返回类型是int*类型,分配的大小为sizeof(int)*100
- 注意:
- malloc 只是分配内存,不进行初始化;所以所得到的内存中的值时 随机的;
– 习惯上 初始化为NULL 或 使用memset函数; - malloc分配的内存空间在逻辑上是连续的,而在物理上可以不连续;
- malloc 只是分配内存,不进行初始化;所以所得到的内存中的值时 随机的;
参考:
- C PrimerPlus 附录B–参考资料
- 黑马
- 【c语言】malloc函数详解
2. 如何存储–何时释放
2.1. 变量 – 作用域 & 生命周期
类型 | 作用域 | 生命周期 |
---|---|---|
auto变量 | 一对{}内 | 当前函数 |
static局部变量 | 一对{}内 | 整个程序运行期 |
extern变量 | 整个程序 | 整个程序运行期 |
static全局变量 | 当前文件 | 整个程序运行期 |
extern函数 | 整个程序 | 整个程序运行期 |
static函数 | 当前文件 | 整个程序运行期 |
register变量 | 一对{}内 | 当前函数 |
2.2. 内存分区
- 内存分区
2.3. 存储类型
- 存储类型