Olá,
Estou criando um fonte para uma dll onde pretendo gerar um array de vários tipos sendo que os tipos serão definidos em tempo de execução.
Pelo que pesquisei terei que usar ponteiro do tipo void. Para cada tipo informado pretendo alocar o espaço de memória para um tipo e armazenar o endereço alocado e o tipo utilizado.
Na função da dll que faz a alocação para o array o programa está abortando, bem no ponto da alocação. Segue o código da função onde acontece o erro (procurei colocar de forma enxuta):
iFields = 1;
extern "C" __declspec(dllexport) int Add_Record()
{
void **pFields;
int iCont, iRet;
printf("Antes\n");
*pFields = malloc(sizeof(void *)* iFields); // alocando as posições para os ponteiros
printf("Depois\n");
return 0;
}
Este mesmo código ao ser inserido na função main, em outro projeto de teste que gera um programa para console, não gera o problema. Segue abaixo
void ** pFields; // variável para apontar para os campos
int iFields = 1;
printf("Antes\n");
*pFields = malloc(sizeof(void *)* iFields); // alocando as posições para os ponteiros
printf("Depois\n");
Existe algum limitação ao trabalhar com a dll ou estou codificando alguma coisa de forma incorreta?
Notas sobre o ambiente de desenvolvimento:
Windows 7 - 64 bits
Dev C++ (saída do compilador gerando também para 64 bits)
Agradeço pela atenção dispensada