Я попытался смоделировать его следующим образом.
Код: Выделить всё
namespace {
namespace {
extern "C" {
extern std::byte const t1StartPtr[];
extern std::byte const t1EndPtr[];
}
asm(R"(
.section .rodata
.global t1StartPtr
.global t1EndPtr
.balign 8
t1StartPtr:
.incbin "/tmp/t1File.zip"
t1EndPtr:
)");
std::span t1 { t1StartPtr, t1EndPtr };
}
// Adding this reference makes the crash go away
//std::span const & t1ConstRef = t1;
namespace {
extern "C" {
extern std::byte const t2StartPtr[];
extern std::byte const t2EndPtr[];
}
asm(R"(
.section .rodata
.global t1StartPtr
.global t1EndPtr
.balign 8
t2StartPtr:
.incbin "/tmp/t2File.zip"
t2EndPtr:
)");
std::span t2 { t2StartPtr, t2EndPtr };
}
// Adding this reference makes the crash go away
//std::span const & t2ConstRef = t2;
}
[*] Утверждая, что std :: span правильно выровнен (они оба выровнены по границам 16 байтов)
[*] Проверка (в отладчике), что _M_PT (т.е. size_t dummy = 0; не решает проблему)
Я в настоящее время немного озадачен тем, что попробовать дальше. Может ли кто -нибудь заметить то, что я делаю неправильно (конечно, я довольно слаб в своей встроенной сборке). < /P>
Для ясности фактические файлы - это zip -архивы, которые я использую для данных (не для исполняемого кода), так что до тех пор, пока страница, содержащая эти файлы, отображаются для прочтения, это должно быть в порядке. MSVC был бы огромным подъемом по другим причинам в проекте. Содержимое которого я не могу загрузить. Я посмотрю, смогу ли я выяснить что -то похожее на загрузку для компилятора Explorer. Общий исполняемый размер весит примерно на 275 МБ.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ining-a-gl
Мобильная версия