overthestardust 2013-02-20 10:54:54

[C++] 余命マイナス このエントリーをはてなブックマークに追加

投稿者からのアピールポイント

一時オブジェクトの寿命がー 未定義の動作コワイヨ。 他にもいろいろ突っ込みどころが… こんなコードが世の中に出回っているのです…

struct Foo {
  // コンストラクタとか
  // メンバ変数とか
};

void Hoge( Foo* foos[], int n )
{
  // 読み取って何かする
  // 書き込みはしない
}

int main(int argc, char* argv[])
{
  Foo* foos[] = { &Foo( /*何か*/ ), &Foo( /*初期値*/ ) };
  Hoge( foos, 2 );
  return 0;
}

コメント(2)

#1 m_akihiro 2012-09-24 06:50:58  

Hogeの引数をconst std::vector<Foo>&のみでいいんじゃないかな?

std::vector<Foo> foos = {Foo(...), Foo(...)};とかinitializer_listなのでC++11必須ですが

#2 donadonasan 2018-04-30 22:42:59  

何らかの理由でポインタの配列を作りたいなら、この初期化はだめだよねえ。スコープの関係で、オブジェクト作るそばから破棄されうる(よね?)


このウンコードに臭った人は、こちらのウンコードにも臭ってます

[その他] HOW TO ABC..

このエントリーをはてなブックマークに追加

実際にあった某システムの超重要なマスター...

create table item_master (
 A varchar(2...

鑑賞する »

[C] 何がしたかったのか

このエントリーをはてなブックマークに追加

10年位前、炎上しているプロジェクトの支...

void funcX() {
    int a;
    a = func...

鑑賞する »

[C] ( 0][0 )/

このエントリーをはてなブックマークに追加

とある組み込み系のコード。元気に動いては...

#define NUM_PORT 8
#define NUM_CHANNEL ...

鑑賞する »