Ir para conteúdo
Fórum Script Brasil

RogersM

Membros
  • Total de itens

    3
  • Registro em

  • Última visita

Sobre RogersM

RogersM's Achievements

0

Reputação

  1. Descobri uma forma mais limpa para resolver, basta por entre parenteses, desta forma ele incrementa o conteúdo do apontamento: (*tamA)++;
  2. Pelo que entendi o problema está nas linhas: *tamA++; e *tamB++; Ao invés de incrementar o conteúdo da variável passada por parâmetro, deve estar incrementando a posição do ponteiro. Fiz um teste, declarei uma variável inteira e fiz o incremento nela e depois retornei seu valor para o conteúdo de memória apontado pelo ponteiro. Como não conheço quase nada da linguagem, acho talvez deva existir uma maneira mais simples e elegante de se fazer isso. Segue abaixo o trecho que modifiquei referente ao tamA: itemp = *tamA; itemp++; *tamA=itemp;
  3. 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
×
×
  • Criar Novo...