malloc和free
来源:互联网 发布:阿里云个人网站备案 编辑:程序博客网 时间:2024/06/05 03:05
/* ============================================================================ Name : TestMemory.c Author : lf Version : Copyright : Your copyright notice Description : malloc和free 注意细节: void * malloc (size_t size) 因为malloc函数并不知道用户获取到这块数据后存放什么类型的数据,所以返回一个通用指针void *. 用户可以将其转换成需要的类型的指针再使用.其实,void *可以和任何指针类型之间相互隐式转换. ============================================================================ */#include <stdio.h>#include <stdlib.h>#include <string.h>void testMemory();typedef struct {char *name;int number;} student;int main(void) {testMemory();return EXIT_SUCCESS;}/** * 1 malloc和free成对出现 * 2 在free(p)之后,再执行p=NULL * 因为free(p)只是归还了p所指向的内存地址但是没有改变p的值,即p现在所指向的内存 * 已经不属于本用户了即p成为了野指针,所以为了避免这种情况再手动执行p=NULL * 3 要先用malloc给给stu->name分配空间再执行strcpy * 否则可能覆盖name指向的地址的数据造成段错误 * 4 要先释放stu->name再释放stu,否则造成stu->name * 变成野指针无法回收其指向的内存 */void testMemory() {student *stu = malloc(sizeof(student));if (stu == NULL) {printf("OOM\n");exit(1);}stu->number = 9527;stu->name = malloc(20);//strcpy(stu->name, "xiao ming");printf("stu->number=%d,stu->name=%s\n", stu->number, stu->name);free(stu->name);free(stu);stu=NULL;}
0 0
- 关于malloc和free
- malloc() 和 free()
- malloc和free原理
- malloc和free原理
- malloc()和free()
- malloc()和free()
- malloc和free
- malloc()和free()
- 关于malloc和free
- malloc()和free()
- malloc()和free()
- malloc和free原型
- malloc()和free()
- malloc 和free 分析
- malloc和free
- malloc()和free()
- malloc()和free()
- 谈谈malloc()和free()
- NSPredicate
- Codeforces Round #294 (Div. 2) -- A. A and B and Chess
- Drools6 入门学习(一)——Drools6新特性
- HDU 5179 beautiful number 离线处理
- Android 提交数据到服务器的四种方法
- malloc和free
- 多个controller切换以及在他们之间传递数据
- c++ 虚基类
- JAVA学习笔记48——总结:容器
- 【c++】内存存储分区分类
- Windows内存管理
- Codeforces Round #294 (Div. 2) -- B. A and B and Compilation Errors
- android:layout_gravity和android:gravity的区别
- java中字节流与字符流的区别详解