Обнуление переменных вручную VS копирование структуры - PullRequest
4 голосов
/ 20 июля 2010

У меня длинная структура C (не C ++).Он используется для управления объектами в игре, с положением, некоторыми данными о поведении, ничего не показными, за исключением двух строк.Структура является глобальной.

Прямо сейчас, всякий раз, когда объект инициализируется, я помещаю все значения в значения по умолчанию, одно за другим

myobjects[index].angle = 0; myobjects[index].speed = 0;

, вот так.Это на самом деле не кажется медленным, но мне интересно, если копирование структуры «template» со всеми значениями, установленными по умолчанию, быстрее или удобнее.

Итак, чтобы подвести итог на два вопроса:быстрее скопировать структуру вместо ручной установки всех данных?Что я должен иметь в виду из-за неправильно выделенной памяти для строк?

Ответы [ 2 ]

2 голосов
/ 20 июля 2010

«Более удобный», вероятно, более важная часть.

struct s vs[...];
...
// initialize every member to "default"
// but can't use in normal assignment
struct s newv = {0};
vs[...] = newv;

Или скрыть «подробности инициализации» за функцией инициализации (или макросом, если вам не нравится обслуживаемый код: -)

struct s* init_s (struct s* v, ...) { /* and life goes on */ }
1 голос
/ 20 июля 2010

Вы можете использовать эту последовательность:

memset(myobjects+index,0,sizeof(myobjects[0]);

если все, что вам нужно, это установить все элементы в ноль

Осторожно: если конкретный элемент является указателем, для него будет установлено значение NULL

Нелу Козак

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...