[Dúvida]malloc: memory corruption

1. [Dúvida]malloc: memory corruption

Letícia Delfino Teixeira
letsdelfino

(usa Outra)

Enviado em 02/11/2016 - 13:23h

Estou tentando criar uma lista em C e quando vou cadastrar um segundo cliente o programa para de funcionar e aparece a seguinte mensagem: malloc: memory corruption
Alguém sabe o que pode estar acontecendo? É um programa muito grande e com muitas funções então vou colocar s´o a parte de cadastro aqui em baixo.

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<locale.h>

typedef struct estru{
struct estru *anterior;
char string[100];
struct estru *abaixo;
struct estru *proximo;
}cliente;

cliente *primeiro = NULL;
cliente *p, *q, *r, *s;

void cadastrarCliente(){
p = (cliente*)malloc(sizeof(cliente*));

p->anterior = NULL;
p->abaixo = NULL;
p->proximo = NULL;

printf("Nome:\t");
scanf("%s;", p->string);

if(primeiro == NULL){
primeiro = p;
}
else{
q->proximo = p;
p->anterior = q;
}

q = p;
primeiro->anterior = p;
p->proximo = primeiro;

}



  


2. Re: [Dúvida]malloc: memory corruption

Paulo
paulo1205

(usa Ubuntu)

Enviado em 02/11/2016 - 18:17h

letsdelfino escreveu:

	p = (cliente*)malloc(sizeof(cliente*)); 


Você errou no tipo que passou como argumento para sizeof. Com isso, você está alocando memória de menos, e corrompendo dados fora do espaço que você alocou.

Por isso mesmo, eu recomendo que todas as alocações sejam feitas de um modo a prova de erros.

ptr=malloc(sizeof *ptr);  // desde que “ptr” seja um ponteiro diferente de ‘void *’. 







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts