Проблема
Я следую над этим примером от Khronos для создания унифицированного буфера Raii Vulkan. Программа вылетает на линии Memcpy с ошибкой «неверного доступа». Ошибка: < /p>
Exception: EXC_BAD_ACCESS (code=2, address=0x1026d4000)
< /code>
Я сделал суть с минимальным воспроизводимым примером здесь. < /p>
Строки, наиболее важные для этой проблемы: < /p>
uint8_t* pData = static_cast(uniformDataMemory.mapMemory(0, memoryRequirements.size));
memcpy(pData, &mvpc, sizeof(mvpc));
uniformDataMemory.unmapMemory();
мое понимание
Я хочу прояснить свое понимание того, что происходит за кулисами. br />
a vk :: raii :: buffer < /code> просто предоставляет описание того, как будет использоваться буфер и насколько он большой. Я создаю это первым, чтобы выяснить, какие требования он будет иметь для памяти графического процессора. < /Li>
GPU может иметь несколько типов памяти, которые имеют разные свойства. Мне нужно найти индекс к типу памяти графического процессора, который удовлетворяет требованиям моего буфера. Память на графическом процессоре. Память будет существовать для срока службы объекта. даст мне void*, который я могу написать несколько байтов на. Размер Параметр VK :: MemoryRequirements из моего буфера. Больше, чем размер данных, которые я копирую, поэтому MEMCPY должен быть безопасным.
Вопрос
Является ли какое -либо из моих предположений выше? Если нет, каковы возможные причины неверного доступа к памяти?
[b] Проблема [/b] Я следую над этим примером от Khronos для создания унифицированного буфера Raii Vulkan. Программа вылетает на линии Memcpy с ошибкой «неверного доступа». Ошибка: < /p> [code]Exception: EXC_BAD_ACCESS (code=2, address=0x1026d4000) < /code> Я сделал суть с минимальным воспроизводимым примером здесь. < /p> Строки, наиболее важные для этой проблемы: < /p> uint8_t* pData = static_cast(uniformDataMemory.mapMemory(0, memoryRequirements.size)); memcpy(pData, &mvpc, sizeof(mvpc)); uniformDataMemory.unmapMemory(); [/code] [b] мое понимание [/b] Я хочу прояснить свое понимание того, что происходит за кулисами. br /> [list] [*] a vk :: raii :: buffer < /code> просто предоставляет описание того, как будет использоваться буфер и насколько он большой. Я создаю это первым, чтобы выяснить, какие требования он будет иметь для памяти графического процессора. < /Li> GPU может иметь несколько типов памяти, которые имеют разные свойства. Мне нужно найти индекс к типу памяти графического процессора, который удовлетворяет требованиям моего буфера. Память на графическом процессоре. Память будет существовать для срока службы объекта. даст мне void*, который я могу написать несколько байтов на. Размер Параметр VK :: MemoryRequirements из моего буфера. Больше, чем размер данных, которые я копирую, поэтому MEMCPY должен быть безопасным. [/list] [b] Вопрос [/b] Является ли какое -либо из моих предположений выше? Если нет, каковы возможные причины неверного доступа к памяти?