【发布时间】:2016-07-08 15:33:12
【问题描述】:
我将给出以下代码来说明我的问题:
class Abc
{
public:
Abc(std::string &a, std::string &b, int num)
{
pairArray_ = std::make_pair(a,b);
num_ = num;
}
std::pair<std::string, std::string> pairArray_;
int num_;
};
class Bcd
{
public:
Bcd()
{
myArray_.reserve(100);
}
void push_back(std::string &a, std::string &b, int num)
{
Abc temp(a,b,num);
myArray.push_back(temp);
}
public:
std::vector<Abc> myArray_;
}
这两个类的典型用法如下:
void main()
{
Bcd tempExp;
std::string a;
std::string b;
int num;
tempExp.push_back(a,b,num);
}
从代码中我们可以看到,每次从Bcd类调用push_back函数时,都会从Abc类分配内存,然后将其复制到向量myArray_中。该向量将处理每个复制的Abc 对象的内存分配。如果我们将类定义放在库中,而在使用静态运行时库时将执行代码放在程序中,这可能会出现问题。我想知道如何避免从向量数组分配内存。我尝试通过在类定义中使用reserve 来避免为向量分配内存。但是,这个reserve 函数只能处理整个向量的内存分配,而不能处理其元素的内存分配。
【问题讨论】:
-
请避免“上课”。您的帖子中有 4 个课程,我不能绝对确定您指的是哪一个,或者每次都相同。明确说明哪个类存在于哪个二进制文件中,而不是含糊其辞。对你的问题要明确和直接,而不是“这可能是个问题”。
标签: c++ memory memory-management vector