é preciso evitar ao máximo a alocação de memoria em Heap
Não.
O certo é entender bem as diferenças entre stack e heap, para que eles servem, e em quais casos cada um é o mais adequado - leia aqui para mais detalhes.
Tem casos, por exemplo, em que é mais recomendável - ou a única opção - alocar no heap (leia o link já indicado, lá está bem explicado).
Ver também: When is it best to use the stack instead of the heap and vice versa?
Eu acho que as respostas do SOen, especialmenet a aceita, não muito boas, apesar de certas, pode levar a entendimento errado pela simplificação, a aceita beira ao erro de tão simples, porque ser incompleto pode ser errado.
E é importante notar que isso não é exclusivo de C++. Na verdade C e C++ nem definem isso na especificação. Embora na prática seja quase impossível fazer o que está lá sem stack e heap, não é algo formalmente especificado.
Também seria bom deixar claro que malloc()
é uma função, e em C++ evita-se bastante seu uso.
Não há garantias que o new
aloca no heap. E, uma atribuição pode fazer muita coisa diferente. Essa é até uma das críticas que se faz ao C++, embora seja uma feature poderosa também, porque o mundo não é maniqueísta.
Eu até acho que afirmar que deve-se evitar ao máximo a alocação no heap não seja um erro absurdo, mas em modo pedante on (algumas pessoas adoram... quem? eu?!?!?! :D), de fato pode dar uma ideia errada para quem lê. Fica parecendo uma resposta do ChatGPT, quem não entende do assunto pode aprender errado. Sendo hiper pedante, "evitar" me parece um termo bom, mas que muitas pessoas vão interpretar errado por causa do "ao máximo".
O próprio uso de "partes da memória" pode levar a algo que dê entendimento errado, mas chega de ser pedante por hoje :D
Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).
Muito show, obrigado por esses links, com certeza vai ajudar a galera que passar por aqui