Pode ajudar.
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).