Stack Overflow em Português Asked on November 30, 2021
Se eu usar char *char_commandout = (char *) malloc(1);
, o byte alocado irá armazenar o “” na posição 0 do vetor ou irá alocar um espaço para o valor que eu quero armazenar (na posição 0) e um para o “” (na posição 1)?
O Victor já deu a resposta base da dúvida, vou acrescentar que é comum as pessoas usarem um memset()
para zerar a memória quando necessário. Quando é necessário o calloc()
pode ser usado para alocar e já zerar. Em tese é possível ter otimizações, talvez até em conjunto com o sistema operacional para ganhar performance, mas não conte com isto, inclusive porque sequer o c/re/malloc()
precisar ser o original. A diferença pro malloc()
é a limpeza dos dados.
No caso de interpretar o dado como uma string, e em C você pode interpretar como quiser, um 1 byte zerado será uma string com 0 caracteres, o