Разве файл не разрешен до Main или после того, как Main вышел?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Разве файл не разрешен до Main или после того, как Main вышел?

Сообщение Anonymous »

Впервые я включил MSAN в Clang, что -то вполне кроме Asan, которое доступно только на Clang, а не в GCC, и я начал получать некоторые ошибки. Я посмотрел на проблему, и, по -видимому, в начале моей программы, перед основной, т.е. динамическая инициализация статической переменной, у меня было: < /p>
std::ofstream outFile(filepath.c_str(), std::ios::binary | std::ios::out);

outFile.good(); // THIS IS WHAT RAISED THE MSAN ERROR
< /code>
Аналогично, после основных выходов у меня есть файл журнала, автоматически очищать в файл, и когда я вызову: < /p>
std::filesystem::exists()
< /code>
Я получаю ошибку MSAN: < /p>
==712701==WARNING: MemorySanitizer: use-of-uninitialized-value
< /code>
Важно понимать, что использование единолизованного значения не означает, что интуитивно вы думаете в качестве единолизированного значения. Например, это: < /p>
int main()
{

{
PointerClass ptr;
TargetClass target;
ptr.target = &target;
}

}
< /code>
Если PoinderClass использует участника TargetClass после уничтожения, то он будет подхвачен только MSAN, а не Asan (см. Этот вопрос). Это означает, что, насколько я знаю, GCC (который не поддерживает MSAN), никогда не может забрать эту ошибку. В любом случае, я пытаюсь сказать, что MSAN использует: < /p>
WARNING: MemorySanitizer: use-of-uninitialized-value
< /code>
для обозначения использования после бесплатного, поэтому вы не можете использовать описание сообщения каким -либо конкретным диагностическим способом.std::ofstream::good();
< /code>
перед основным или: < /p>
std::filesystem::exists()
< /code>
После основного неопределенного? Я проверил cppreference, но он ничего не говорит о том, что это запрещено.

Подробнее здесь: https://stackoverflow.com/questions/797 ... has-exited
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»