新しいプレースメントを使用しようとしましたが、エラーが発生し続けました。私はしばらく前に覚えている、それは働いていた。 Ubuntu 14.04のg ++(ver 4.8.4)C++プレースメント新しいコンパイルエラーを続ける
#include <stdio.h>
typedef unsigned int uint;
struct strSession {
uint sessionId;
uint srcIp;
uint dstIp;
};
int main(int argc, char *argv[]) {
char buf[20];
strSession *q = (strSession*)&buf[0];
new (q) strSession;
return 0;
}
ガットエラー
$ g++ -std=c++11 te.cc `pkg-config --cflags glib-2.0`
te.cc: In function ‘int main(int, char**)’:
te.cc:12:10: error: no matching function for call to ‘operator new(sizetype, strSession*&)’
new (q) strSession;
^
te.cc:12:10: note: candidate is:
<built-in>:0:0: note: void* operator new(long unsigned int)
<built-in>:0:0: note: candidate expects 1 argument, 2 provided
任意のアイデアは間違って何ですか?
また、私は 'q'のポイントをあまり得ていません。オブジェクトを倒すと思われる。ハハ、そう言います。 –
@LightnessRacesinOrbit、同意します。 –
アライメントを監視する必要があります。 –