使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到s1,s2中。 注意:不要改动main函数,不能增行

admin2020-05-14  49

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,该程序运行时有错误,请改正程序中的错误,使得程序运行后没有内存遗漏。可以在修改处增加或者删除一条语句。本程序完成输入两个字符串,分别存储到s1,s2中。
    注意:不要改动main函数,不能增行或删行,也不能更改程序的结构,错误的语句在//********error********的下面。
    1  #include
    2  void main()
    3    {
    4    char*s1;
    5    char  s2[1024];
    6    cout<<"please input a string:"<    7   //********error********
    8    cin.getline(s1,1024);
    9    cout<<"please input a string:"<    10    cin.getline(s2,1024);
    11    //*********error*********
    12   delete s1 ;
    13    //********error********
    14   delete s2 ;
    15    return ;
    16  }

选项

答案(1)s1=new char[1024]; (2)delete[]s1; (3)删除“delete s2;”语句

解析 本题是主要是处理程序运行后是否有内存遗漏的问题。对于这类问题主要是根据调试环境中的错误提示以及警告提示进行处理。
    [解题思路]
    (1)sl变量为指针变量,在使用前要对其分配空间,所以第1个标识下添加“s1=new char[1024];”。
    (2)为了防止内存空间的泄漏,指针变量使用后,要将其空间释放,第二个标识下“delete[]s1;”。
    (3)s2是数组变量,空间是在使用前静态分配的,不是使用前动态分配的,所以使用后不用释放内存空间,这里应该删除“delete s2;”。
转载请注明原文地址:https://kaotiyun.com/show/G08p777K
0

最新回复(0)