[英]Sending vector pointer to external function throws 'std::bad_alloc' C++
所以,我试图将一个指针向量发送到 function,在那里我使用 .pushBack() function 向它添加一些新成员。 当我只想要向量上的一个成员时,这很有效。 但是,如果我尝试推动更多,它会抛出:
**在抛出 'std::bad_alloc' 的实例后调用终止
什么():std::bad_alloc**
我已经尝试了几件事,这是我最后一次尝试,我使用 void ptr 和 static 强制转换为向量,因为我读到使用 & 创建一个临时地址,所以我尝试了一个更永久的地址。
所以,这里是:
void humans(std::vector<Character> *human, unsigned human_count) {
for (unsigned i = 0; i < human_count; i++) {
unsigned human_x;
unsigned human_y;
unsigned human_id;
std::cin >> human_id >> human_x >> human_y; std::cin.ignore();
human->push_back(Human(human_id, Coordinates(human_y, human_x)));
}
}
int main()
{
unsigned x;
unsigned y;
Ash Pete;
std::vector<Character> human;
void *ptr;
Character *zombie;
unsigned human_count;
unsigned zombie_count;
ptr = &human;
while (1) {
std::cin >> x >> y; std::cin.ignore();
Pete.setPosition(Coordinates(y, x));
std::cin >> human_count; std::cin.ignore();
std::cerr << "HUMANS " << human_count << std::endl;
humans((static_cast<std::vector<Character>*>(ptr)), human_count);
std::cin >> zombie_count; std::cin.ignore();
zombies(&zombie, zombie_count);
human[0].print();
human[1].print();
if (human[1].getId() == 1)
std::cout << human[1].getPosition() << std::endl;
else
std::cout << human[0].getPosition() << std::endl;
}
}
它在人类 function 上引发错误。 谢谢!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.