我有以下简化代码:
struct sMatch
{
public:
sMatch( ULONG size )
{
myVector.assign( size, false );
}
std::vector< bool > myVector;
}
std::vector< sMatch > myMatchVector;
sMatch temp( 3 );
myMatchVector.push_back( temp );
我在执行push_back()时会看到信号7(SIGBUS),代码1(BUS_ADRALN)崩溃。 Backtrace指向+运算符中的 myVector ,但我不清楚实现的错误。
我一直在为sMatch构造函数中的 myVector 尝试不同的实现/内存分配,但我没有尝试成功阻止此崩溃。
答案 0 :(得分:0)
在不知道还有什么事情发生的情况下,很难说,但是我最近遇到了一个问题,即一个类的动态分配成员被写在他们的边界之外并覆盖另一个类的成员。
也就是说,地址对齐错误似乎是因为其他东西正在覆盖你的矢量。
同样,一个更完整的例子可能是下一步......除非你在这个例子中得到错误......