数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
来源:互联网 发布:java连接ssh上传文件 编辑:程序博客网 时间:2024/05/17 05:04
////////////////////////////////////////////////////////////////////////////////
更多原创“uC/OS-II学习笔记之:系列”基础及嵌入式相关知识详解,请访问可乐虎博客:
http://blog.csdn.net/dcx1205
相信不会让您失望!!////////////////////////////////////////////////////////////////////////////////
<span style="font-size:24px;">//顺序栈的C语言实现//大家请看最后用两种方式实现的main函数#include <stdio.h>#include <math.h>#include <stdlib.h> #define TRUE 1#define FALSE 0#define STACK_SIZE 5typedef int ElementType; //定义结构体typedef struct SeqStack { ElementType array[STACK_SIZE]; ElementType top;}SEQSTACK; //……与问题无关的函数代码均已省略……//情况1int main(void){ SEQSTACK *pS;//定义一个指向结构体变量的指针 pS = (SEQSTACK *)malloc(sizeof(SEQSTACK)); if (pS == NULL) { return FALSE; } InitStack(pS);//初始化 PushStack(pS, 1);//压栈 PushStack(pS, 2); PushStack(pS, 3); PushStack(pS, 4); PushStack(pS, 5); TraStack(pS);//遍历栈 free(pS);//释放pS所占内存空间 return 0;}/*//情况2int main(void){ SEQSTACK STK;//定义一个结构体类型的变量 SEQSTACK *pS;//定义一个指向结构体变量的指针 pS = &STK;//将结构体变量的地址赋给指针 //下面函数的参数使用pS和&STK是等效的 InitStack(pS);//初始化 PushStack(&STK, 1);//压栈 PushStack(pS, 2); PushStack(&STK, 3); PushStack(pS, 4); PushStack(&STK, 5); TraStack(pS);//遍历栈 return 0;}*/请问情况1和2有什么区别啊?是情况1好还是2好?为什么呢?注:情况1和2的运行结果是一样的。解答:
情况1是内存在堆中分配,属动态分配,用完需要手动释放,会产生内存碎片。 情况2是内存在栈中分配,属静态分配,用完会自动释放,不会产生内存碎片。
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- C和指针之动态内存分配malloc、calloc、realloc简单使用和区别
- C和指针之动态内存分配之(编写calloc函数,函数内部使用malloc函数来获取内存)
- 使用二级指针分配和释放内存示例 malloc(), free()
- C primer plus:在结构中使用指针,使用malloc分配指针空间以及free
- 关于内存分配时malloc()和calloc()的区别
- C语言中动态内存分配 malloc realloc calloc 的使用和比较
- 关于全局变量指针直接 malloc分配内存的一些问题
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- malloc的内存分配之 malloc(0)的内存分配情况
- [转] malloc的内存分配之 malloc(0)的内存分配情况
- new 和malloc 给变量分配内存的区别
- uva 1344 Tian Ji -- The Horse Racing
- linux内核之block层函数调用图
- poj 2337 欧拉回路
- Hex文件转换Bin文件——VC代码
- 1002
- 数据结构 学习笔记之:关于顺序栈中给结构体类型指针分配内存时,使用malloc和不使用malloc的疑惑之解惑!
- 1005
- 飞凌OK6410之触摸屏的学习
- 多寄存器寻址指令ldmia/ldmib和ARM存储器访问指令——多寄存器存取
- drp的笔记1
- 1006
- myeclipse 配置svn插件
- Codeforces Round #168 (Div. 1) 完全
- c#总结