sizeof

1. sizeof

???
gokernel

(usa Linux Mint)

Enviado em 14/12/2013 - 07:58h


Ola pessoal !

Alguem saberia informar porque o gcc informa essa sizeof da struct = 20 ?

Pelos meus cálculos seriam = 17.

Sou eu que estou errado ou seria um "bug" no gcc?



#include <stdio.h>

struct data {
int x;
char *name;
int y;
char c;
int z;
};

int main()
{
printf ("Tamanho data: %d\n", sizeof(struct data));
return 0;
}



  


2. Re: sizeof

ian cléver sales fernandes
ianclever

(usa Arch Linux)

Enviado em 14/12/2013 - 10:55h

não sei em que tipo de computador vc está rodando(suponho que deva variar se for 32 ou 64 bits)

era para ser 21 na verdade, creio que para criar alguma compatibilidade e evitar uma boa parte dos bugs, os ponteiros de char aqui no linux agora vem com 8 bytes padrão, isso facilita para quem gosta de fazer aqueles gatos usando ponteiro(não alocado previamente) para receber strings.


3. Re: sizeof

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 14/12/2013 - 11:37h

Pelo que li no link abaixo é um modo de organizar a memória exigida pelas structs.

http://stackoverflow.com/questions/18448295/why-does-sizeof-show-4-bytes-for-a-char


4. Re: sizeof

Luis R. C. Silva
luisrcs

(usa Linux Mint)

Enviado em 14/12/2013 - 11:41h

A questão em si não é o ponteiro de char, mas o próprio char, que quando declarado com um inteiro na mesma struct fico com 4 bytes.


5. Re: sizeof

???
gokernel

(usa Linux Mint)

Enviado em 15/12/2013 - 11:39h

Olá caros colegas, grato pelas respostas!

E só informando melhor:
Sim eh para compilador de 32 bits, apesar de utilizar OS de 64 bits.

A informação correta e detalhada será muito importante para o que estou fazendo agora:
Implementar uma ( C struct ) em C/Assembly para uma pequena linguagem( C-like) que estou fazendo.

Só digo que estou me "divertindo" neste final de semana usando assembly e buscando index de array(char *). ;)

Abraço !









Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts