如果std::vector和相关类型是自动调整大小的,那么如果我这样声明一个向量:
std::vector<string> myvec;
那么它将使用更多的堆栈进行调整大小,而:
std::vector<string> *myvec = new std::vector<string>();
使用更多的堆内存能否调整大小?
如果std::vector和相关类型是自动调整大小的,那么如果我这样声明一个向量:
std::vector<string> myvec;
那么它将使用更多的堆栈进行调整大小,而:
std::vector<string> *myvec = new std::vector<string>();
使用更多的堆内存能否调整大小?
向量在其内部分配堆上的空间。
对于基于栈的向量,你只需要支付几个字节的栈空间,内部缓冲区将始终从堆上分配。
因此,当你执行vec = new vector()时,你实际上只分配了一小部分空间,这可能并不是很好。
std::vector总是在堆上分配其缓冲区。因此,无论向量本身在哪里分配,重新调整大小都只会影响堆。