NetBeans IDE 8.2 C ++字符串声明问题

时间:2018-02-01 21:12:08

标签: c++ string netbeans

我在NetBeans IDE 8.2中运行c ++代码时出现问题,该代码具有声明字符串

lesson1.cpp

#include <string>
#include <iostream>

int createPointer INT(int element)
{
    int *pointer = new int(element);
    return *pointer;
}

char createPointer_CHAR(char element)
{
    char *pointer = new char(element);
    return *pointer;
}

std::string createPointer_STR(std::string element)
{
    std::string *pointer = new std::string(element);
    return *pointer;
}

lesson1.h

#include <string>

#ifndef LESSON1_H
#define LESSON1_H

int createPointer_INT(int element);
char createPointer_CHAR(char element);
std::string createPointer_STR(std::string element);

#endif /* LESSON1_H */

的main.cpp

// #include <cstdlib> -- for system
// #include <string>
#include <iostream>
#include <string>
#include "lesson1.h"

int main() {
    int element0 = createPointer_INT(50);
    char element1 = createPointer_CHAR('U');
    std::string element2 = createPointer_STR("something");
    std::cout << element0 << std::endl << element1 << std::endl << element2;

    return 0;
}

建立成功,但运行失败。

最终输出:RUN FAILED(退出值-1 073 741 511,总时间:45ms)

当我评论所有具有std :: string的函数和变量时,所有工作正在工作
有什么问题?

1 个答案:

答案 0 :(得分:0)

由于调用了函数,例如&#34; createPointer_INT&#34;,没有返回指针似乎毫无意义。由于这是一项任务,我认为这是预期的。如果是这种情况,您应该具有以下功能:

int *createPointer_INT(int element);
char *createPointer_CHAR(char element);
std::string *createPointer_STR(std::string element);

当函数执行并完成时,它返回新创建的变量的值(可能带有垃圾值),然后指针值超出范围。之后,您没有用于访问此新分配的内存的有效指针。我不确定运行时错误是什么,但我没有看到创建内存,将值设置为该值以及返回所述值的重点;留下内存泄漏而不是删除它或返回它。如果你像这样重新编码,我怀疑你会发现变得更容易,那么你可能没有这样的问题。如果这样做,您的编译器似乎遇到了STL库的问题。也许您对STL链接文件和编译器正在编译的内容有不同的构建。您可以尝试重新安装新的编译器。