
malloc 函数开辟 size 个字节的空间返回指向这个空间起始地址的地址指针类型是泛型指针如果开辟空间失败返回NULL。void* malloc (size_t size);free函数释放动态内存开辟的内存空间。void free (void* ptr);errno函数获取错误信息。strerror函数 将 errno 转换为可读的错误信息进行输出。注意动态申请的空间是在堆区申请的如果不主动释放空间程序结束时系统会自动回收动态开辟的空间。malloc例子#includestring.h #includestdlib.h #include errno.h int main() { int* p1 (int*) malloc(sizeof(int)*10); if (p1 NULL) { printf(%s\n, strerror(errno)); return; } int i 0; for (i 0; i 10; i) { *(p1 i) i; printf(%d , *(p1 i)); } free(p1); p1 NULL; return 0; }释放完内存后为了野指针被误用要把指针置为NULL。calloc函数为 num个大小为size的元素分配内存空间并将所有位初始化为零。开辟成功返回开辟空间的起始地址如果开辟失败返回NULL。void* calloc (size_t num, size_t size);calloc例子int main() { int* p2 (int*)calloc(10, sizeof(int)); if (p2 NULL) { printf(%s\n, strerror(errno)); return; } int i 0; for (i 0; i 10; i) { printf(%d , *(p2 i)); } free(p2); p2 NULL; return 0; }realloc函数调整动态开辟的内存空间。void* realloc (void* ptr, size_t size);参数ptr :指向一个要重新分配内存的内存的指针。如果为空指针则会分配一个新的内存块且函数返回一个指向它的指针。size:内存块的新的大小以字节为单位。realloc函数的特点(1) 后面空间不够大重新开辟一块空间把旧空间的数据copy到新空间释放旧的空间返回新的空间的地址。int*ptr(int*)realloc(p3, 80);(2) 后面空间足够大在原来空间的后面追加空间。int*ptr(int*)realloc(p3, 8000);realloc例子int main() { int* p3 (int*)malloc(40); if (p3 NULL) { printf(%s\n, strerror(errno)); return; } int i 0; for (i 0; i 10; i) { *(p3 i) i; } int*ptr(int*)realloc(p3, 80); if (ptr ! NULL) { p3 ptr; } for (i 0; i 20; i) { *(p3 i) i; printf(%d , *(p3 i)); } free(p3); p3 NULL; return 0; }