题库 软件开发 题目列表 关于以下代码说法正确的有? #include<io...
多选题
关于以下代码说法正确的有?
 




#include<iostream>
#include <map>
#include <memory>
using namespace std;
std::map<int, char*> my;
std::pair<int, char*> test() {
    int a = 10;
    char buff[128];
    sprintf(buff, "%d test", 99);
    return std::make_pair(a, buff);
}
int main() {
    my.insert(test());
    for (auto iter = my.begin(); iter != my.end(); ++iter)
    {
        cout << iter->first << endl;
        cout << iter->second << endl;
    }
    return 0;
}
A.

a是临时变量,返回会被销毁,可能导致输出结果有问题

B.

buff[128]是临时变量,返回会被销毁,可能导致输出结果有问题

C.

my.insert(test());插入会报错

D.
可以将test函数的代码改成如下代码,会解决test函数内所有的问题:

std::pair<int, char*> test() {
std::shared_ptr<char> buff(new char[128]);
sprintf(buff.get(), "%d test", 99);

return std::make_pair(10, buff.get());
}
E.
可以将test函数的代码改成如下代码,会解决test函数内所有的问题:

std::pair<int, char*> test() {
static char buff[128];
sprintf(buff, "%d test", 99);
return std::make_pair(10, buff);
}
题目信息
校招真题
-
正确率
0
评论
14
点击