我想在Microsoft Visual Studio 2013上編譯一個爲C++編寫的程序。malloc C++ VS 2013
聲明
sdesc_t *ret = _malloc(sizeof(sdesc_t));
回報: 智能感知:類型的值 「無效*」 不能用於初始化類型 「sdesc_t *」
任何建議的實體?
我想在Microsoft Visual Studio 2013上編譯一個爲C++編寫的程序。malloc C++ VS 2013
聲明
sdesc_t *ret = _malloc(sizeof(sdesc_t));
回報: 智能感知:類型的值 「無效*」 不能用於初始化類型 「sdesc_t *」
任何建議的實體?
使用此:
sdesc_t *ret = (sdesc_t *)_malloc(sizeof(sdesc_t));
或者更好地利用reinterpret_cast
:
sdesc_t *ret = reinterpret_cast<sdesc_t *>(_malloc(sizeof(sdesc_t)));
而且,由於使用的是C++,你最好使用new
:
sdesc_t *ret = new sdesc_t;
而且,由於使用的是支持auto
的最新C++編譯器,您可以:
auto ret = new sdesc_t;
而且由於STL具有智能指針豐富的支持,你可以簡單地使用它們。例如:
auto ret = std::make_unique<sdesc_t>();
可能還會提到unique_ptr,而您在此:) –
我在編輯此評論時一直在進行編輯! – Ajay
使用型鑄造之前設定指針的值一樣
sdesc_t *ret = (sdesc_t *)_malloc(sizeof(sdesc_t));
正如你寫的是默認爲空,因此它使錯誤。
你確定這是一個C++程序嗎? –
爲了澄清上述情況,C會允許這樣做,C++不會。 –
我是C和C++的混合體,當我讀到最好的是轉換C++中的C部分。你是這麼認爲的嗎? – gmonti