返回目录:https://blog.youkuaiyun.com/chen1083376511/article/details/82723709
问题:
问:什么是内存泄漏和内存溢出?
答:
内存泄漏:在程序申请内存后,该内存不再会被引用,但是不能释放该内存空间。如果你delete指针之后,该空间不能归还,自己又不能进行访问(找不到该内存的地址)。
内存溢出:系统预定好的内存空间不满足程序在请求的内存大小,不够用,就是内存越界。(比如一个由系统分配固定大小的数组存放大于该数组的一组数据,便是溢出)主要的情况就是栈溢出,栈内存不足。还有一种情况是缓冲区溢出。
内存上溢:栈满时,再进行入栈运算。
内存下溢:空栈(栈里面没有数据),再进行出栈运算
------------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题:
问:malloc函数前面为什么一定要强制转换成相应的类型。
答:因为malloc的返回值是void*类型的,表明还不清楚指向的指针类型是什么。在堆上申请好内存之后,在运用过程中,只需要强制转换自己想要的指针类型就可以了。函数原型:void *malloc(size_t)。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题:
问:利用malloc函数申请内存块。如果内存不足,就发生什么情况?
答:如果内存不足,malloc就会返回NULL。
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------
问题:malloc的参数是“0”或者“NULL”或者“负数”,会有什么意义?
答:
参数为0时,可能返回NULL,也可能返回一个指向分配了0字节区域的指针。
参数为NULL时,生成一个警告然后返回0字节。
参数为负数时,会引发一些问题。
------------------------------