您的位置:首页 > 编程语言 > C语言/C++

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 内存比较
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: