Мне интересно, как я могу проверить, что массив статичен или динамически распределен. Я посмотрел онлайн и нашел следующую реализацию в mysql source code, я не знаю, почему это работает? (строка 0303 проверяет, является ли массив является статическим)C/C++: Как проверить, является ли массив статическим или динамическим во время выполнения
/*
0301 Just mark as empty if we are using a static buffer
0302 */
0303 if (array->buffer == (uchar *)(array + 1))
0304 array->elements= 0;
Это определение DYNAMIC_ARRAY в MySQL:
341
342 typedef struct st_dynamic_array
343 {
344 uchar *buffer;
345 uint elements,max_element;
346 uint alloc_increment;
347 uint size_of_element;
348 } DYNAMIC_ARRAY;
Существует некоторый недостающий контекст вокруг этих утверждений, таких как определение и тип 'array'. –
Не проверять. Просто не выбрасывайте информацию в первую очередь. Хорошим способом обработки динамических массивов является использование 'std :: vector'. –
Это определение DYNAMIC_ARRAY в mysql: 342 typedef struct st_dynamic_array 343 { 344 uchar * buffer; 345 элементов uint, max_element; 346 uint alloc_increment; 347 uint size_of_element; 348} DYNAMIC_ARRAY; –