std::vector<sf::Texture> texturas;
Putting sf::Texture in an std::vector is going to cause you issues.
Sometimes when you call push_back on an std::vector it causes reallocation, so the elements move to another location.
If there were some pointers pointing to those elements, those pointers will become invalid.
You can check this stackoverflow answer on iterator invalidation.Because of this, I don't think std::vector is a good choice for storing textures, since you'll have pointers to elements.
However here's the source of your current issue.
corpo.setTexture(texturas[0]);
You're indexing out of bounds here.
You're trying to get the first element (remember arrays start at 0), but at this point texturas has no elements.
texturas.reserve(10);
for (i=0; i < texturas.size(); i++) {
texturas[i].loadFromFile("Idle (" + std::to_string(i+1) + ").png");
texturas[i].setSmooth(true);
}
Here is another example of you indexing out of bounds.
Reserve doesn't do what you think it does. It does not change the size of the vector.
What you want to do is resize.
(Also why is i a member variable? It should really be local since you only use it here.)