Hannibal failed because his strategy failed. According to his strategy, Hasdrubal was to follow him to Italy shortly after he had crossed the Alps, but the Romans kept Hasdrubal busy in Spain, and when he finally arrived - ten years later than planned - it was already too late. If the strategy had worked, Hannibal would have received the badly-needed reinforcements after Cannae.
Also, Carthage - that had in this respect gained an important ally of Syracuse - also attempted to create a sea route from Carthage to Italy to reinforce Hannibal, but this route never materialized.
Bookmarks