一.动态内存存储常见的错误
1.对NULL指针的解引用操作
p是空指针,并没有指向的空间,却坚持给p赋值,那数值会存入哪里??这必然会出现一些问题。
2.对动态开辟空间的越界访问
3.对非动态开辟空间使用free释放
非动态开辟空间指并不是通过malloc、calloc、realloc函数在堆区上开辟的空间。
4.使用free释放一块动态开辟内存的一部分
free()函数接受的是动态开辟空间的地址。
5. 对同一块动态内存多次释放
上图第一次free函数,释放p所指向的空间,但是p指向空间的地址并不发生改变。free之后没有对p赋值NULL,p此时为野指针。再使用free函数接收p时,程序就会出现问题。
free函数使用注意事项:a.非动态开辟空间不能使用free释放空间
b.free接受空指针时无事发生
6.动态开辟内存忘记释放(内存泄漏)
内存泄漏:是指由于程序员的疏忽导致动态开辟的空间没有释放,程序结束后,该内存空间没有还原给计算机,因此会导致计算机内存可用空间的减小。
以上是总结的六点写代码过程中易出现的关于动态开辟内存和释放的错误。大家在平时写代码时一定要细心细心再细心。当然偶尔出现错误也是很正常,正所谓人无完人嘛。
二.有关动态开辟内存空间的笔试题解析
1.
改正:
2.
改正后:
3.
改正:
4.
改正:
5.
改正:
6.
改正:
三.c程序在内存中的开辟
暑期编程PK赛 得CSDN机械键盘等精美礼品!



