的Visual C++,微軟的Visual Studio 2010速成:從這個malloc的一個類中C++訪問浮動指針 - >訪問衝突
訪問工作:
float* block = (float *)_aligned_malloc(32 * sizeof(float), CACHE_ALIGNMENT);
block[0] = (float)30; // I work fine.
但是,當它是這個類中,它不起作用:
class Test
{
private:
//static const int numberOfElements = 1024;
public:
float* block1;
float* block2;
// Constructor
Test::Test(int nElements)
{
float* block1 = (float *)_aligned_malloc(nElements * sizeof(float), CACHE_ALIGNMENT);
float* block2 = (float *)_aligned_malloc(nElements * sizeof(float), CACHE_ALIGNMENT);
}
// Destructor
Test::~Test(void)
{
_aligned_free(block1);
_aligned_free(block2);
}
};
...
Test testClass = Test(32);
testClass.block1[0] = (float)30; // Access violation!
...
或者,如果聲明爲指針,同樣的事情(這是我第一次嘗試它):
Test* testClass = new Test(32);
testClass.block1[0] = (float)30; // Access violation!
什麼我在當浮子*是一個類中定義訪問值方面做錯了什麼?問題是別的嗎?
看在上帝的份上,用'std :: vector'而不是'float *' –
@sad_man,不確定上帝是否關心手頭的問題。 –
如果你真的必須嘗試自己管理記憶,請記住[Rule of Three](http://stackoverflow.com/questions/4172722/what-is-the-rule-of-ree)。雖然這只是這裏的一個錯誤。 –