C语言内存管理的简介
2014-10-28 20:53
106 查看
关于内存分配问题,内存分为栈区,堆区,静态区,常量区,代码区常量区,
栈区中 内存是由高到低分配的
堆区中是由低到高分配的 另外堆区重的内存有我们自己进行分配和释放 由此开始,下面的区内存地址依次变小
静态区 全局变量和被static修饰的静态变量 依次程序中只分配依次内存
常量区 内存是只读的 不可修改 程序执行完时会释放掉常量区和静态区的内存
代码区是存放各种函数的位置
int *p = malloc(sizeof(int));
p = &a;
free(p);
此语句是错误的因为p此时存放的是a的地址,不能释放应该改为
int *p = malloc(sizeof(int));
*p = a;
free(p);
此时可以释放p
释放内存的时候,
只是对内存标记为可用, 并没有对内存进行清空
其余的功能
calloc 在分配内存的时候清空所有内容,在效率上略低
realloc 重新分配大小 有可能改变内存位置
memset 初始化字节
memcpy 拷贝字节
mencmp 内存比较
栈区中 内存是由高到低分配的
堆区中是由低到高分配的 另外堆区重的内存有我们自己进行分配和释放 由此开始,下面的区内存地址依次变小
静态区 全局变量和被static修饰的静态变量 依次程序中只分配依次内存
常量区 内存是只读的 不可修改 程序执行完时会释放掉常量区和静态区的内存
代码区是存放各种函数的位置
int *p = malloc(sizeof(int));
p = &a;
free(p);
此语句是错误的因为p此时存放的是a的地址,不能释放应该改为
int *p = malloc(sizeof(int));
*p = a;
free(p);
此时可以释放p
释放内存的时候,
只是对内存标记为可用, 并没有对内存进行清空
其余的功能
calloc 在分配内存的时候清空所有内容,在效率上略低
realloc 重新分配大小 有可能改变内存位置
memset 初始化字节
memcpy 拷贝字节
mencmp 内存比较
相关文章推荐
- Objective-C语法之Objective-C语言和IOS系统(简介,语法,系统结构)
- 推荐] C语言 内存管理详解
- [黑马训练营]IOS C语言 内存管理
- C语言的应用范围和发展前途简介
- Object-c内存管理简介
- C语言第九章:内存管理
- Objective-C语言和iOS系统(简介,语法,系统结构)
- 分享:流言终结者——C语言内存管理
- c语言中的结构(struct)和联合(union)简介
- C语言-1.简介
- Linux操作系统的内存管理特性简介
- (转)内存管理(C语言中malloc和free的用法)
- C语言中的内存管理
- 内存管理--内存的简介
- 简介Objective-C语言
- C语言深入学习系列 - 字节对齐&内存管理
- C语言 第一章 C语言简介
- Linux 内存管理之highmem简介
- C语言的预处理命令简介
- C语言学习笔记(二)--数据类型、常量和变量简介