赞
踩
stdlib.h
库文件下的malloc函数
和free函数
对内存进行分配和释放所需占用的内存空间;#include <stdlib.h>
void *malloc(size_t size)
//功能:在堆区分配空间
//参数:size就是要分配的空间大小,单位是字节
//返回值:成功就返回分配的空间首地址,失败则返回NULL
#include<stdlib.h>
void free(void *ptr);
//功能:释放由malloc在堆区分配的空间
//参数:要释放的空间的首地址
//返回值:没有
#include<stdio.h> #include<stdlib.h> short *my_malloc(){ short *k = (short *)malloc(sizeof(short)*6); return k; } void my_free(short **k){ free(*k); *k = NULL; } int main(int argc, const char *argv[]) { short *p = my_malloc(); if(NULL == p){ printf("内存分配失败\n"); return -1; } for(int i = 0; i < 6;i++){ p[i] = rand()%100+1; } for(int i = 0; i < 6;i++){ printf("p[%d] = %d,p + %d = %p\n",i,p[i],i,p + i); } printf("p = %p\n",p); puts("-----------------------------"); my_free(&p); printf("p = %p\n",p); return 0; }
p[0] = 84,p + 0 = 0x55faa4adc260
p[1] = 87,p + 1 = 0x55faa4adc262
p[2] = 78,p + 2 = 0x55faa4adc264
p[3] = 16,p + 3 = 0x55faa4adc266
p[4] = 94,p + 4 = 0x55faa4adc268
p[5] = 36,p + 5 = 0x55faa4adc26a
p = 0x55faa4adc260
-----------------------------
p = (nil)
#include<stdio.h> #include<stdlib.h> short my_malloc1(short **a){ *a = (short *)malloc(sizeof(short)*6); if(NULL == *a){ printf("内存分配失败\n"); return -1; } return 0; } void my_free(short **k){ free(*k); *k = NULL; } int main(int argc, const char *argv[]) { short *p = NULL; my_malloc1(&p); for(int i = 0; i < 6;i++){ p[i] = rand()%100+1; } for(int i = 0; i < 6;i++){ printf("p[%d] = %d,p + %d = %p\n",i,p[i],i,p + i); } printf("p = %p\n",p); puts("-----------------------------"); my_free(&p); printf("p = %p\n",p); return 0; }
p[0] = 84,p + 0 = 0x563e3cd3a260
p[1] = 87,p + 1 = 0x563e3cd3a262
p[2] = 78,p + 2 = 0x563e3cd3a264
p[3] = 16,p + 3 = 0x563e3cd3a266
p[4] = 94,p + 4 = 0x563e3cd3a268
p[5] = 36,p + 5 = 0x563e3cd3a26a
p = 0x563e3cd3a260
-----------------------------
p = (nil)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。