Crash comes from writing to char array (ID::name) out its bound and thus overriding memory in the ID struct.