Правилен ли следующий код (func1()), если он должен вернуть i? Я помню, где-то читал, что возникает проблема при возврате ссылки на локальную переменную. Чем он отличается от func2()?
int& func1()
{
    int i;
    i = 1;
    return i;
}
int* func2()
{
    int* p;
    p = new int;
    *p = 1;
    return p;
}