0
對於來自UNIT測試的構造函數中的某些reasone字段初始化,會破壞內存。構造函數中的字段初始化會破壞內存
我有以下類
//.h
class Entity
{
public:
...
Entity();
private:
unsigned int _nextOperatorId;
unsigned int _operators[30][4]; //from consts
...
}
//.cpp
Entity::Entity() : _operators(), _nextOperatorId(1)
{
/* If i run this from unit test i see:
_operators [0] 0x0569bb38 {3452816845, 3452816845, 3452816845, 3452816845, 1}
_operators [1] 0x0569bb4c {3452816845, 0, 0, 0, 0}
_operators [2] 0x0569bb4c {0, 0, 0, 0, 0}
... (all other rows are zeroes).
If i delete _nextOperatorId(1) initialiazation, or if i run constructor from console app, here all as expected - all rows in operators array are zeroes */
}
我運行這個在VS單元測試類初始化是這樣的:
private
Entity* entity;
public:
TEST_METHOD_INITIALIZE(ClassInitialize)
{
entity = new Entity();
}
那麼,爲什麼內存corruypted後,我加入_nextOperatorId(1)?所有看起來這麼簡單..
後一個完整的例子,編譯。 – user657267 2014-08-29 08:25:48
我很想知道是否相同的問題與初始化列表順序相反(即它與您班級中的decls匹配)。注意:它應該沒關係;他們應該始終按照自上而下的decl順序進行初始化,而不是初始化者列表順序,但是我不會放過MS來放棄這個球。 – WhozCraig 2014-08-29 08:33:31