У меня метод main
выглядит следующим образом.
struct list *l = array_list();
if (l == NULL) {
return EXIT_FAILURE;
}
srand(time(NULL));
int size = 4;
for (int i = 0; i < size; i++) {
int *d = malloc(sizeof(int));
*d = rand();
list_insert_last(l, d);
printf("inserted: %d\n", *d);
}
printf("size: %zu\n", list_size(l));
for (int i = 0; i < size; i++) {
int *d = list_delete_first(l);
printf("deleted: %d\n", *d);
free(d);
}
printf("size: %zu\n", list_size(l));
array_list_free(l);
return EXIT_SUCCESS;
У меня вопрос, хотя я уже отметил premature-optimization
, о переменной int *d
.
Не будет ли лучше объявить переменную один раз вне цикла и использовать ее повторно?
struct list *l = array_list();
if (l == NULL) {
return EXIT_FAILURE;
}
srand(time(NULL));
int size = 4;
int *d; // declare once
for (int i = 0; i < size; i++) {
d = malloc(sizeof(int)); // reuse it
*d = rand();
list_insert_last(l, d);
printf("inserted: %d\n", *d);
}
printf("size: %zu\n", list_size(l));
for (int i = 0; i < size; i++) {
d = list_delete_first(l); // reuse it
printf("deleted: %d\n", *d);
free(d);
}
printf("size: %zu\n", list_size(l));
array_list_free(l);
return EXIT_SUCCESS;
Сделайте минимальный воспроизводимый пример и загрузите его на godbolt.org с включенной оптимизацией. Я почти уверен, что код сборки будет точно таким же.