一、动态内存管理笔试题
1.值传递
注意事项1:指针的地址传递需要将指针的地址用二级指针接收,本题属于值传递不属于地址传递
修改:1改为地址传递,2释放malloc()函数申请的空间
注意事项2:printf()字符串时,参数实际是字符串首元素的地址
2.在栈上申请空间
注意事项1:函数相关的存于栈上,出了函数后栈中的数据自动销毁
修改:static修饰后变为静态变量存于静态区不存于栈上,直到程序结束才会释放
3.malloc()与free()
修改:添加与malloc()相配的free()手动释放堆上的空间
4.free()与指针置空
修改:free()后记得将指针置空,否则空间还给内存但指针还指向一块没有权限操控的空间
二、C/C++程序的内存开辟
1.栈、堆、静态区
注意事项1:static修饰局部变量后生命周期变长
三、柔性数组
1.定义:
2.两种案例:
3.柔性的特点:
实例1:柔性数组与malloc(),realloc()
实例2:尝试用指针替换柔性数组