Я пытаюсь получить общее количество байтов массива структур. Общие байты 1 структуры составляют 96 байт. Сначала я помещал int, чтобы избежать заполнения байтов. Я действительно не знаю, правильно ли работает то, что я делаю, но я знаю, что выделение struct [MAX] будет 96 байт * 50 на основе образца, который мы вставили здесь. я получаю около 7 миллионов байт или некоторую стоимость мусора. Любой может помочь мне рассчитать в коде сумму struct address addr[MAX]
где MAX = 50
. Вот полный образец. Спасибо, парни!Как правильно рассчитать размер массива struct? Правильно ли я это делаю?
#include <stdio.h>
#include <stdlib.h>
#define MAX 50 //for structure
struct address {
int zip; // 4 bytes
char name[20]; // 20 bytes
char street[40]; // 40 bytes
char city[16]; // 16 bytes
char state[4]; // 4 bytes
char country[10]; // 10 bytes
};
int main()
{
struct address addr[MAX];
unsigned int *allocation;
allocation = malloc(MAX * sizeof(struct address));
if (!allocation) {
printf("Memory allocation error\n\n");
exit(1);
} else {
printf("address start: 0x%x08 - size in bytes: %d\n", &addr, sizeof(struct address));
printf("sizeof zip %d\n", sizeof(addr[0].zip));
printf("sizeof name %d\n", sizeof(addr[0].name));
printf("sizeof street %d\n", sizeof(addr[0].street));
printf("sizeof city %d\n", sizeof(addr[0].city));
printf("sizeof state %d\n", sizeof(addr[0].state));
printf("sizeof country %d\n", sizeof(addr[0].country));
printf("total size of structure is %d\n", allocation);
}
free(allocation);
system("PAUSE");
return 0;
}
'allocation' является указателем на выделенных данных, а не его размер ... и почему вы выделить структуру, когда она уже выделена в качестве переменной авто? –
Я не знал, что это было выделено. Значит, мне не нужен malloc? и указатель на размещение? Таким образом, чтобы найти общие байты полного массива struct, будет следующим: 'totalBytes = MAX * sizeof (struct address);'? – Soundview
нет, вам это не нужно. –