一、C语言编译的内存分配
二、堆区空间的分配
1、malloc函数
功能:从堆区分配内存
#include <stdlib.h>
void *malloc(unsigned int size)//@size 分配内存的字节数
2、free函数
功能:释放内存
#include <stdlib.h>
void free(void *ptr)//@ptr 分配内存的首地址
3、memset函数
#include <string.h>
void *memset(void *s, int c, size_t n);
功能:把s所指向内存区域的前n个字节,全部置为c参数:
@s想要操作内存区域的首地址
@c内存区域填充的值
@n需要填充的字节数返回值
成功返回s所指向的地址,失败返回NULL
示例:申请数组地址,将输入的数据存入数组,输出数组
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 5
//申请数组地址
int *get_memory_addr(){
int *result=NULL;
result=(int *)malloc(sizeof(int)*N);
if(NULL==result){
printf("地址申请失败\n");
}
//为result赋初始值
memset(result,0,sizeof(int)*N);
return result;
}
//输入
void input_array(int *p){
for(int i=0;i<N;i++){
printf("请输入第%d个数:",i+1);
scanf("%d",(p+i));
}
}
//输出
void output_array(int *p){
for(int i=0;i<N;i++){
printf("%d\t",*(p+i));
}
}
int main(){
int *t=NULL;
t=get_memory_addr();
input_array(t);
output_array(t);
free(t);
t=NULL;
return 0;
}