malloc函数说明:
#include <stdlib.h>
void *malloc(size_t size);
功能:在内存的动态存储区(堆区)中分配一块长度为size字节的连续区域,用来存放类型说明符指定的类型。
分配的内存空间内容不确定。
参数:
size:需要分配内存大小(单位:字节)
返回值:
成功:分配空间的起始地址
失败:NULL
free函数说明:
#include <stdlib.h>
void free(void *ptr);
功能:释放ptr所指向的一块内存空间,ptr是一个任意类型的指针变量,指向被释放区域的首地址。
对同一内存空间多次释放会出错。
参数:
ptr:需要释放空间的首地址,被释放区应是由malloc函数所分配的区域。
返回值:无
示例代码:
#include <stdlib.h>
#include <stdio.h>
int main() {
int i, *arr, n;
printf("请输入要申请数组的个数: ");
scanf("%d", &n);
// 堆区申请 n * sizeof(int) 空间,等价int arr[n]
arr = (int *)malloc(n * sizeof(int));
if (arr == NULL) { // 如果申请失败,提前中断函数
printf("申请空间失败!\n");
return -1;
}
for (i = 0; i < n; i++){
// 给数组赋值
arr[i] = i;
}
for (i = 0; i < n; i++) {
// 输出数组每个元素的值
printf("%d, ", *(arr+i));
}
// 释放堆区空间
free(arr);
return 0;
}