Вклад структуры в размер шрифта

Вы можете использовать сообщения в представлениях:

from django.contrib import messages

messages.error(request, "Error!")

Документация: https://docs.djangoproject.com/es/1.9/ref/contrib/messages/

8
задан Jonathan Leffler 13 July 2016 в 07:02
поделиться

7 ответов

Нет, он просто объединяет все элементы в один элемент более высокого уровня, размер которого является просто суммированием размеров отдельных элементов (плюс некоторые отступы в зависимости от правил выравнивания, но это выходит за рамки объем этого вопроса).

26
ответ дан 5 December 2019 в 04:35
поделиться

Нет, если это может помочь - нет. C избегает накладных расходов, как чумы. В частности, это позволяет избежать накладных расходов в этом контексте.

Если вы использовали другую структуру, вы могли бы увидеть разницу:

struct space_filled
{
    char       part0;
    double     part1;
};

Если ваша машина требует double для выравнивания по 8-байтовой границе ( и sizeof (double) == 8 , что нормально, но не предусмотрено стандартом), тогда вы обнаружите, что структура занимает 16 байт.

12
ответ дан 5 December 2019 в 04:35
поделиться

Нет, структура не должна ничего добавлять. В отличие от Java или .NET, где классы (и структуры) имеют множество других обязанностей, в C и C ++ они представляют собой просто контейнеры, используемые для хранения ряда элементов данных. В C ++ им, возможно, придется хранить vtable для разрешения вызовов виртуальных функций, если таковые существуют, но в целом нет, сама структура не имеет накладных расходов.

Единственное исключение:

typedef struct {} empty;
assert(sizeof(empty) > 0);

Размер пустой структуры будет не равным нулю. Структура должна иметь некоторый ненулевой размер, поскольку каждый объект должен иметь уникальный адрес. (В противном случае вы не смогли бы создать массив из этих структур)

6
ответ дан 5 December 2019 в 04:35
поделиться

Нет. Struct не увеличивает размер и не имеет накладных расходов в скомпилированном C.

Это уровень синтаксиса, который требует дополнительной работы со стороны компилятора, но не имеет накладных расходов во время выполнения.

C является чрезвычайно «голым». язык, что означает, что там ничего нет, если не требуется. Так что спросите себя: «Какие накладные расходы требует struct REQUIRE?», И вы ничего не найдете.

3
ответ дан 5 December 2019 в 04:35
поделиться

Нет, это не так.

Это одна из хороших сторон структур (почему они были так полезны в программировании TCP / IP старой школы).

Это хороший способ представить структура памяти / буфера.

2
ответ дан 5 December 2019 в 04:35
поделиться

нет тип структуры в C, просто последовательно размещайте элементы в памяти

0
ответ дан 5 December 2019 в 04:35
поделиться
0
ответ дан 5 December 2019 в 04:35
поделиться
Другие вопросы по тегам:

Похожие вопросы: