C/C++
动态内存 标签描述

动态内存管理第一部分解释了什么是动态内存管理,有什么用,以及一些函数,第二部分主要讨论了动态内存在使用的时候会出现一些经典的错误,需要注意。 那么这个第三部分主要讨论一些有关动态内存管理有关的比较经典的笔试题。 题目1 请问运行Test函数会有什么样的结果? voidGetMemory(charp){ p=(char)malloc(100); } voidTest(void){ charstr=NULL; GetMemory(str); strcpy(str,"helloworld"); printf(str); } intmain(){ Test(); return0; } 结果: ...

也许你从未听说过这个柔性数组(flexiblearray)这个概念,但是它确实是存在的,C99中,结构中的最后一个元素允许是未知大小的数组,这就叫做【柔性数组】成员。 柔性数组举例 什么意思呢?举个例子: structP{ charn; inta; charcrr[];//可变长度/未知大小 //charcrr[0]//这个也可以 }; intmain(){ structPp; return0; } 其中crr[]就是柔性数组成员-因为它的数组大小是可以调整的。 柔性数组的特点 1.结构中的柔性数组成员前面必须至少有一个其他成员。 2.sizeof返回的这种结构大小不包括柔性数组的内...

之前写过一个版本的通讯录,当时还没有学习动态内存管理,所以只是简单实现了一版。传送门在这: 通讯录 在之前一段时间把动态内存管理学完之后,今天把这个小项目,重新捡起来,改一改,供大家参考。 之前写的时候是给了1000个人的信息,一旦生成.exe文件后,那么这个数量信息就没法改了。不太方便。今天主要是利用动态内存开辟,优化一下之前写的代码。改成动态增长的版本。 动态增长版本通讯录 设定: 默认可以存放3个人的信息,当发现当前通讯录满的时候,我们进行扩容,每次增加两个信息长度的空间。 (这里空间个数少,是方便我调试,大家可以直接多来点空间。) contact.h 首先针对头文件中,我们的宏定义1...