Co rozumiesz przez "przerywa działanie"? W twoim programie może wystąpić dzielne przez zero, może dlatego?
myślę że zle alokuje pamieć..
Masz rację, bo używasz malloc w C++. Malloc alokuje surową pamięć i nie tworzy w niej obiektów, więc trzeba je potem utworzyć samemu za pomocą placement-new. Ale w twoim przypadku dynamiczna alokacja w ogóle nie ma sensu, po prostu zrób tablicę automatyczną o rozmiarze 3.