C++ 重割矢量断层
我试图保留内存并从Vulkan内存复制C++ 重割矢量断层,c++,segmentation-fault,C++,Segmentation Fault,我试图保留内存并从Vulkan内存复制 try { image.reserve(a_width * a_height * 4); } catch (...) { std::cerr << "ERROR: " << std::endl; } std::cout << "p ... " << (a_width * a_height) << std::endl; for (int i = 0; i
try {
image.reserve(a_width * a_height * 4);
}
catch (...) {
std::cerr << "ERROR: " << std::endl;
}
std::cout << "p ... " << (a_width * a_height) << std::endl;
for (int i = 0; i < (a_width * a_height); i += 1)
{
std::cout << "q ... " << i << std::endl;
image.push_back((unsigned char)(255.0f * (pmappedMemory[i].r)));
image.push_back((unsigned char)(255.0f * (pmappedMemory[i].g)));
image.push_back((unsigned char)(255.0f * (pmappedMemory[i].b)));
image.push_back((unsigned char)(255.0f * (pmappedMemory[i].a)));
}
试试{
图像保留(a_宽度*a_高度*4);
}
捕获(…){
std::cerr它几乎正好停在四分之一的地方。分配给pmappedMemory
的内存太小。您可能分配了大量像素,而不是正确的元素数量(像素的四倍)
另一个选项是,pmappedbuffer实际上包含字节,而您错误地认为它是一个浮点缓冲区。您是如何获得此映射区域的,它指向什么的?确定显然这是Intel Graphics Vulkan支持问题
治愈-按行映射内存放在一边:这不会导致无符号字符目标溢出吗?阅读并使用最近的,可能是g++-Wall-g
请添加image
的定义push_-back
不会出错。如果reserve
成功,并且如果你的向量是std::vector
,那么我不认为它甚至有可能失败(至少在一致的平台上)。问题很可能是pmappedMemory[i]
。检查pmappedMemory的大小。您可能试图索引超出范围的内容。