С++ какой вид памяти использовать лучше и главное почему?
> Какой вид памяти использовать предпочтительней?
В зависимости от задачи. 
1 Если размер массива неизвестен во время компиляции, тогда нужно использовать выделение памяти из «кучи». Если это С++, тогда почему же не делать это через new / delete?
2 Иначе, если размер массива известен, тогда да можно объявить константу и использовать ее для определения размерности. 
В жизни чаще встречается 1 вариант
самое важное отличие — когда вы пользуетесь malloc, то приходится делать приведение типа, в этот момент всю ответственность за корректность приведения берет программист, а значит потенциальное место для ошибок (причем си именно за это и ругают, так как ошибки получаются самые страшные), а если совсем избавиться от указателей (можно оставить ссылочные типы MyClass& a) то тогда за целостностью системы будет следить компилятор и писать 'не туда' вы не сможете.