Note uma coisa: em C não é necessário fazer conversão de tipo de void* para nenhum outro tipo de ponteiro. Veja o código abaixo, que é perfeitamente válido em C, mas inválido em C++.
/* Este programa é um programa em C que NÃO É VÁLIDO EM C++! */
char *pc=malloc(100*sizeof *pc);
int *pi=malloc(100*sizeof *pi);
double *pd=malloc(100*sizeof *pd);
/* ... algum código que usa os ponteiros acima ... */
free(pd);
free(pi);
free(pc);
Como você está usando C++, o código acima não vale. Contudo, a melhor forma de corrigi-lo não é sair colocando conversões de tipo para todo lado, mas sim usar a forma C++ de fazer alocação dinâmica, como os operadores new e new[] para alocar, e delete ou delete[] para desalocar. Isso elimina completamente a necessidade das conversões de tipo.
// Este é um programa em C++ que não usa o estilo de alocação do C.
char *pc=new char[100];
int *pi=new int[100];
double *pd=new double[100]https://maps.google.com/;
/* ... algum código que usa os ponteiros acima ... */
delete[] pd;
delete[] pi;
delete[] pc;
Se for para usar arrays dinâmicos, eventualmente você pode até preferir a biblioteca padrão de modelos do C++ (STL), valendo-se da conveniência de std::vector em lugar de ter de alocar e desalocar ponteiros explicitamente.
Quanto a conversões de tipo, a boa prática em C++ recomenda não usar o estilo do C, mas operadores que deixam essas conversões mais visíveis, determinam sua natureza (estática, dinâmica, constante ou completamente arbitrária) e dão algum nível de garantia de que a conversão de tipos é segura. No caso do seu código, se você de modo nenhum quiser usar new[]/delete[], considere pelo menos usar a conversão de tipos no estilo do C++.
// A conversão com static_cast<> é segura de funcionar em qualquer máquina.
int *pi=static_cast<int *>(malloc(100*sizeof *pi));
/* ... bla, bla, bla ... */
free(pi);
Ainda com relação a estilo, programas em C++ que usam a biblioteca padrão do C devem preferir incluir cabeçalhos para ela que incluem as transformações necessárias para o C++. Assim, em lugar de #include <stdlib.h>, é preferível usar #include <cstdlib>.
Usamos cookies essenciais para manter o site funcionando e Google Analytics para métricas de audiência. Cookies de anúncios só serão carregados se você permitir.