C/C++ (PDS 1 e 2) Flashcards
Para que serve o operador :: em C++? Qual a outra instrução que serve para a mesma utilidade? Qual o problema que pode ocorrer com a solução alternativa?
O operador <esquerda> :: <direita> serve para informar ao compilador que ele deve usar a propriedade da direita que foi definida no namespace da esquerda.</direita></esquerda>
É possível conseguir o mesmo resultado com a instrução “using namespace <esquerda>" porém podem ocorrer conflitos caso múltiplos namespaces possuam atributos de mesmo nome.</esquerda>
Qual a diferença entre alocar um array usando int array[n] e int *array = malloc(n * sizeof(int)) ? Quando deve se preferir um ao outro?
int array[n] aloca memória na pilha. O acesso aos elementos é bem mais rápido que a alternativa, mas há menos memória disponível e ela é compartilhada com chamadas de função. A liberação da memória ocorre automaticamente quando a variável sai do escopo.
int *array = malloc(n * sizeof(int)) aloca a memória no heap. A execução é mais lenta, porém há bem mais memória disponível. A liberação ocorre de forma manual usando o comando free.