有关malloc与realloc
来源:互联网 发布:上古卷轴5 杰洛特数据 编辑:程序博客网 时间:2024/04/20 10:03
这两个东西出现在c语言里还好说,出现在数据结构里真是频率比较高的,而且傻傻分布不清楚,所以还是简单分析一下2333
一、malloc函数
头文件:#include <malloc.h>(也可用#include<stdlib.h>,如果用c++的话会被包含在#include<iostream>里)
作用:给我们的程序请求出一片内存,以供使用,一般使用过后要用free函数释放掉内存(没有free的话,会造成内存泄漏.一部分的内存没有被使用,但是由于没有free,因此系统认为这部分内存还在使用,造成不断的向系统申请内存,使得系统可用内存不断减少.)
默认返回值:void
一般使用形式:("强制转换类型")malloc(“分配空间大小”);
特点:逻辑上分配有序
样例:
#include<stdio.h>#include<stdlib.h>int main(){int *p;p=(int*)malloc(100*sizeof(int));if(p)printf("yes\n");elseprintf("no\n");free(p);return 0;}二、realloc函数
头文件:头文件:#include <malloc.h>(也可用#include<stdlib.h>,如果用c++的话会被包含在#include<iostream>里)
作用:对malloc申请的内存进行大小的调整
特点:realloc可以对给定的指针所指的空间进行扩大或者缩小,无论是扩张或是缩小,原有内存的中内容将保持不变.当然,对于缩小,则被缩小的那一部分的内容会丢失.realloc并不保证调整后的内存空间和原来的内存空间保持同一内存地址.相反,realloc返回的指针很可能指向一个新的地址.
样例:
#include<stdio.h>#include<stdlib.h>int main(){int *p;p=(int*)malloc(100*sizeof(int));if(p)printf("0x%x\n",p);elseprintf("no\n");p=(int*)realloc(p,1000*sizeof(int));if(p)printf("0x%x\n",p);elseprintf("no\n");p=(int*)realloc(p,10*sizeof(int));if(p)printf("0x%x\n",p);elseprintf("no\n");return 0;}特点:本测试看的出来,当重新分配地址较原来大的话,内存空间地址可能会指向另外一个地方,而较原来小的话,只是在程序之中的一部分损失掉对应信息(但该信息仍保存在内存中)
阅读全文
0 0
- 有关malloc与realloc
- malloc 与 realloc
- new 与 malloc , realloc
- malloc()与realloc()用法
- malloc与calloc、realloc
- malloc、calloc 与 realloc
- malloc(),free()与realloc()
- malloc()、free()、calloc()与realloc()
- malloc()函数与realloc()函数
- malloc函数与realloc函数
- malloc与realloc的区别
- malloc()、calloc()与realloc()详解
- malloc与realloc的区别
- malloc 与 calloc 与 realloc 的区别
- 关于c中的malloc与realloc
- malloc与realloc一个案例测试
- new与malloc,realloc,ceil的区别
- calloc、malloc、realloc的用法与区别
- Java:Gson:Java对象与JSON字符串
- SAP中的容差介绍
- 统计自然语言处理(马尔可夫模型)
- Maven学习(五)--创建java工程与Web工程
- USB转串口驱动的安装(PL2303)
- 有关malloc与realloc
- 63 C语言二维数组
- VMware CentOS网络连接设置
- java GC是在什么时候,对什么东西,做了什么事情?
- Day4:bash基本操作和命令
- Luncen学习笔记 -- day01 简介
- Git使用中遇到的问题记录
- 64 C语言数组元素的查询
- IntelliJ IDEA部署Servlet