向量中的字符串变量导致大量错误(WinMainCRTStartup)

时间:2016-04-22 04:57:22

标签: c++ string windows vector gnu

我在矢量中有一个字符串变量,它获取一个字符串。

#include <vector>
#include <string>
using namespace std;

vector <string> buffer;

main(int argc, char *argv[]){
    buffer[0] = "foobar";
    return 0;
}

它会导致这个庞大的命令行编译器错误,该错误始于:

  

WinMainCRTStartUP的多重定义...

然后错误继续大约500行不连贯的东西。 我用这个编译器(GNU编译器)成功编译了其他C ++程序。我不知道为什么这个特定的程序会导致错误。

1 个答案:

答案 0 :(得分:0)

有两个问题。首先,您需要将返回类型添加到main:

int main() {
  ...
}

二。你有一个空的缓冲区,所以当你正在做缓冲区[0] =“任何东西”时你会破坏内存(后来当另一个函数访问被破坏的对象时可能会发现)。发生这种情况是因为vector []未被检查为vector。如果您将其更改为:

int main() {
  buffer.at(0) = "foobar";
  return 0;
}

你会得到一个例外。