Чтобы выделить в стеке, либо объявите свой объект как локальную переменную по значению , либо вы можете использовать alloca для получения указателя, а затем использовать оператор new на месте:
void *p = alloca(sizeof(Whatever));
new (p) Whatever(constructorArguments);
Однако, используя alloca и in-place, new гарантирует, что память освобождается при возврате, вы прекращаете автоматический вызов деструктора. Если вы просто пытаетесь убедиться, что память освобождается при выходе из области, рассмотрите возможность использования std::auto_ptr<T>
или другого типа интеллектуального указателя.