Я пытаюсь использовать memset для установки всех значений в массиве enum в одно значение, но я не вижу правильных результатов. Первый мемсет работает, второй нет. Мой код:
// definitions
#define NUM_THREADS 1
enum ThreadState
{
INITIALIZING,
READY_TO_CALCULATE,
CALCULATED,
READY_TO_UPDATE,
UPDATED
};
// Later on, in the code...
ThreadState Thread_States[NUM_THREADS];
// Somehow this works - after this statement, every entry in Thread_States is INITIALIZING
memset(Thread_States, INITIALIZING, NUM_THREADS* sizeof(ThreadState));
// ... later on (or even immediately right after) ...
// Failure - after this statement, every entry in Thread_States is 16843009
memset(Thread_States, READY_TO_CALCULATE, NUM_THREADS* sizeof(ThreadState));
Как поясняется в комментариях, при первом вызове memset значения устанавливаются такими, какие я ожидал (ИНИЦИАЛИЗАЦИЯ, т. е. 0). Когда я запускаю второй оператор, я не вижу значений, установленных в READY_TO_CALCULATE (т. е. 1). Скорее, они установлены на 16843009, когда я проверяю отладчик.
Есть ли причина, по которой это относительно простое использование memset непоследовательно в своем поведении?
Спасибо.