Как работает возврат значений из функции?

Недавно у меня была серьезная ошибка, когда я забыл вернуть значение в функцию. Проблема заключалась в том, что, хотя ничего не было возвращено, он отлично работал под Linux/Windows и вылетал только под Mac. Я обнаружил ошибку, когда включил все предупреждения компилятора.

Вот простой пример:

#include <iostream>

class A{
public:
    A(int p1, int p2, int p3): v1(p1), v2(p2), v3(p3)
    {
    }

    int v1;
    int v2;
    int v3;
};

A* getA(){
    A* p = new A(1,2,3);
//  return p;
}

int main(){

    A* a = getA();

    std::cerr << "A: v1=" << a->v1 << " v2=" << a->v2 << " v3=" << a->v3 << std::endl;  

    return 0;
}

Мой вопрос: как это может работать под Linux/Windows без сбоев? Как осуществляется возврат значений на нижний уровень?

6
задан Dirk 11 March 2012 в 09:09
поделиться