Ir para o conteúdo
par4n00b

[C] Ajuda: Nested structures (Resolvido)

Mensagens Recomendadas

par4n00b    0
par4n00b

Boas!

Após declarar as seguintes estruturas

struct d {
char nome[256];
int id;
char desc[1024];
char vars[10];

}; typedef struct d device;

struct m {
int flag;
device dev;

}; typedef struct m message;

struct b {
int readpos;
int writepos;
message array[10];

}; typedef struct b buffer;

quando faço

buffer *bufferIN;
bufferIN->writepos = 0;

Dá segmentation fault...Alguém me sabe dizer o que estou a fazer mal?

Cumps

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
par4n00b    0
par4n00b

Realmente não tinha feito isso..

É que eu quero partilhar o buffer em shared memory, fazendo

shmidIN = shmget (keyIN, sizeof(buffer),IPC_CREAT|0700);
bufferIN = (buffer *)shmat(shmidIN, NULL, 0);

e não se se depois disto, ao fazer

bufferIN = (buffer *)malloc(sizeof(buffer));

Vou perder o ponteiro para a shared memory...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

nesse caso parece-me deixas de ter disponível o apontador para a shared memory... mas nunca usei esse tipo de funções por isso não te posso ajudar muito.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Hipnoted    6
Hipnoted

Já experimentaste declarar os typedef antes de declarar as estruturas? Faz isso e vê se dá.

Eu também nunca usei essas funções por isso não posso dizer mais...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
par4n00b    0
par4n00b

Afinal, declarando os typedef antes da struct funciona perfeitamente! Provavemente estava a fazer alguma coisa mal da primeira vez que experimentei.

Obrigado pela ajuda, problema resolvido

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Rui Carlos    312
Rui Carlos

Afinal, declarando os typedef antes da struct funciona perfeitamente! Provavemente estava a fazer alguma coisa mal da primeira vez que experimentei.

não me parece que o problema estivesse aí... colocar o typedef antes é só uma forma de escrever menos...

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade