猿问

这是什么情况

不明白求解释,就是每一步是怎么搞的?怎么会向0地址写入的?

Single丶love
浏览 1568回答 5
5回答

wooviet

没看到这里是while(1)吗,也就是这个程序会一直循环下去,那么为什么会退出呢?这就要看malloc()这个函数了,这是一个动态申请内存空间的函数,这里把它放在while(1)死循环里,就会一直循环申请一个字节(因为这里写的是申请一个字节)内存空间,这个函数申请的空间是在堆当中申请的,那么请问堆的空间能有多大呢?是不是迟早会被申请完?对的吧?迟早会将空间申请完,那么此时,就是我们常说的内存泄漏,最后内存分配完了,但是就会退出吗?最后会在非法访问内存时异常退出。那么所以我们要养成好习惯,一是申请内存之后一点要检查是否申请成功,二是malloc之后,一定要free掉申请的内存。

凌小天3635910

malloc函数的作用是取一个空的内存,返回一个指针。这个循环可能导致无限的取内存并写入数据0的ascii码。最后系统内存不足而崩溃。

yemaa

c++没学过啊,看那道题你还是多研究一下malloc这个函数吧
随时随地看视频慕课网APP
我要回答