在动态分配结构体后,我认为在最后加上“delete”是明智的。但这会导致运行时错误。虽然编译通过,但如果我去掉“delete”,它可以正常运行。但我担心可能会有内存泄漏。如何安全地处理这段代码?
#include <iostream>
#include <vector>
using namespace std;
typedef struct
{
vector<char*> vstr;
vector<int> vint;
}VecStrInt;
int main()
{
VecStrInt * mtx = new VecStrInt();
mtx[0].vstr.push_back("Hello");
mtx[0].vint.push_back(1);
cout<<mtx[0].vint.at(0)<<endl;
cout<<mtx[0].vstr.at(0)<<endl;
//delete [] mtx;
return 0;
}
std::vector<VecStrInt> mtx;
或者VecStrInt mtx;
都足够了(取决于你想要什么)。 - Jarod42