下面三个程序运行时分别会产生什么结果?为什么?
正确答案:
程序1:系统运行崩溃。
原因:GetMemory(str,100)并没有将申请到的内存传回到调用程序,str一直是NULL,从而导致非法内存访问,使程序崩溃。
程序2:显示“Hello World.”,但将产生内存泄漏。
原因:GetMemory(&str,100)申请到的内存没有被释放。
程序3:显示“Hello World.”但有时系统运行异常。
原因:在free(str)释放内存空间后,str仍然指向原来空间地址,成为“野指针”。如果这时系统将所释放的空间分配给其他程序使用,将会造成系统运行异常。
原因:GetMemory(str,100)并没有将申请到的内存传回到调用程序,str一直是NULL,从而导致非法内存访问,使程序崩溃。
程序2:显示“Hello World.”,但将产生内存泄漏。
原因:GetMemory(&str,100)申请到的内存没有被释放。
程序3:显示“Hello World.”但有时系统运行异常。
原因:在free(str)释放内存空间后,str仍然指向原来空间地址,成为“野指针”。如果这时系统将所释放的空间分配给其他程序使用,将会造成系统运行异常。
答案解析:有
微信扫一扫手机做题