Loading... <div class="tip inlineBlock error"> 栈:由操作系统自动分配与释放内存 </div> <div class="tip inlineBlock success"> 堆:由程序猿分配释放内存 </div> <div class="tip inlineBlock info"> 开辟内存空间必须写头文件为#include <stdlib.h>,并且函数只能通过指针变量索引!!!! </div> 用malloc函数开辟动态内存储存区 作用:在内存的动态储存区中分配长度为size的连续空间 实例: ```cpp #include <stdio.h> #include <stdlib.h> int main ( ) { int *a ; a = ( int * ) malloc ( sizeof( int ) ) ; // (int*)作用是手动把malloc的类型为vold空类型转换为int型 , sizeof (int) 是获取int类型的字节数 ,malloc开辟内存空间 scanf ( "%d" , a ) ; printf ( "%d" , *a ) ; } ``` 用calloc开辟内存空间 作用:在内存的动态储存区中分配n个长度为size的连续空间,这个空间足够保存一个数组 实例: ```cpp #include <stdio.h> #include <stdlib.h> int main ( ) { int *a ; a = ( int * ) calloc ( 1, sizeof( int ) ) ; // (int*)作用是手动把malloc的类型为vold空类型转换为int型 , sizeof (int) 是获取int类型的字节数 ,malloc开辟内存空间 scanf ( "%d" , a ) ; printf ( "%d" , *a ) ; } ``` 用realloc函数重新分配动态储存空间 作用: 如果已经通过malloc函数或者calloc函数获得了动态空间,想改变其大小,可以利用realloc函数重新分配。 实例: ```cpp #include <stdio.h> #include <stdlib.h> int main ( ) { int *a ; a = ( int * ) calloc ( 1, sizeof( int ) ) ; // (int*)作用是手动把malloc的类型为vold空类型转换为int型 , sizeof (int) 是获取int类型的字节数 ,malloc开辟内存空间 realloc( a , 8 ) ; //最后输出结果虽然可能与上例一样,但*a变量实际上已经变成了8个字节的类型 scanf ( "%d" , a ) ; printf ( "%d" , *a ) ; } ``` 用free函数释放动态储存区 作用: 释放指针变量所指向的动态空间 实例: ```cpp #include <stdio.h> #include <stdlib.h> int main ( ) { int *a ; a = ( int * ) calloc ( 1, sizeof( int ) ) ; // (int*)作用是手动把malloc的类型为vold空类型转换为int型 , sizeof (int) 是获取int类型的字节数 ,malloc开辟内存空间 realloc( a , 8 ) ; //最后输出结果虽然可能与上例一样,但*a变量实际上已经变成了8个字节的类型 scanf ( "%d" , a ) ; printf ( "%d" , *a ) ; free ( a ) ; //手动释放内存,简单粗暴 } ``` 最后修改:2021 年 05 月 20 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果文章有用,请随意打赏。