1. 定义一个指针 int *p; 直接给指针赋值会产生段错误 :*p ='c'
malloc 函数原型 void *malloc(size_t size) (开辟的内容大小) C库函数 void *malloc(size_t size)分配所需的内存空间,并返回一个指向它的指针。 作用:开辟地址空间
realloc 函数原型 void *realloc(void *ptr,size_t size) (扩容的函数,扩容的大小) 作用:扩容 C库函数 void *realloc(void *ptr,size_t n)
free 函数原型 void free(void *ptr) 释放之前调用的 calloc ,malloc 或realloc 所分配的内存空间 作用:释放,防止内存泄漏,防止悬挂指针----野指针的一种
memset 函数原型 void *memset(void *str,int c,size_t n) 清楚函数里面的内容,初始化为c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>int main()
{char *p;p = (char *)malloc(1); //p有了具体的内存指向*p = 'c';free(p); //释放内存空间p = NULL;p = (char *)malloc(12);memset(p,'\0',12); //清除malloc(12) 里面的内容,初始化为 '\0'printf("扩容前的地址 :%x\n",p);int len = strlen("csaopcj123456781234567");//溢出int newlen = len - 12 +1;//扩容realloc(p,newlen);printf("扩容后的地址 :%x\n",p);strcpy(p,"csaopcj123456781234567");puts(p);puts("end");return 0;
}