繁体   English   中英

将向量指针发送到外部 function 会抛出 'std::bad_alloc' C++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM