动态内存分配举例,以及动态数组的构造.doc
《动态内存分配举例,以及动态数组的构造.doc》由会员分享,可在线阅读,更多相关《动态内存分配举例,以及动态数组的构造.doc(2页珍藏版)》请在三一文库上搜索。
1、动态内存分配举例,以及动态数组的构造一:传统数组(静态数组)的缺点1:数组的长度必须事先指定,并且是常整数,不能是变量 int a5;2:传统数组程序员无法由程序员释放,只能由系统释放。(并且只能在数组所在函数结束才能释放)3:数组的长度在函数运行期间不能动态的扩充和缩小4:A函数定义的传统数组,在A函数结束时,在B函数中是不能使用的,因为已经释放。也就是传统数组不能跨函数。区分:静态存储与内存的静态开辟二:为什么要动态分配内存用来解决传统数组的四个缺陷三:动态内存分配举例,以及动态数组的构造方式:malloc函数,在堆开辟空间1:malloc是由程序员在堆栈动态开辟空间2:返回值开辟空间的首
2、地址,但是类型是void *,需要强制类型转换3:分配的内存空间应该能整除类型所占的字节数4:包含头文件malloc.h5:只能用free(p)来释放p所指向的动态开辟的内存空间。6:对动态内存空间的操作,用*p来操作。7:可以用多个指针指向这个动态空间8:当有多个指针只向这个动态空间时,只能用free一个指针,多次重复释放要被报错9:可以将动态开辟的的内存指针作为函数参数问题:p的分配类型是动态的还是静态的?当调用free(p)后,p的内存空间会被释放么?例子:动态构建一个一维数组:动态扩充数组的长度,也就是在程序运行时动态扩充:realloc(首地址,总共字节数)作用:将原来动态开辟的动态内存重新开辟一个字节数,如果这个数比以前的大,前面的数据保存。如果比原来的小,保留前面的数据。注意:扩充或者缩放的内存单元是新开辟的内存单元。这个过程中有值的拷贝过程。返回值是新开辟的地址空间首地址。四:静态内存和动态内存的比较静态开辟的内存:在栈中开辟,由编译器分配,由系统自动释放动态开辟的内存:在堆中开辟,由程序员开辟,由程序员自动释放。五:跨函数使用内存的问题
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 动态 内存 分配 举例 以及 数组 构造
链接地址:https://www.31doc.com/p-3395804.html