• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:飛ぶ理由がわかりません)

飛ぶ理由がわかりません

このQ&Aのポイント
  • VC2010で書かれたコードについて、アプリが飛んでしまう現象が起きています。
  • 同じことをしているはずなのに、1の方法ではアプリが飛び、2の方法では正常に動作します。
  • 原因がわからず、環境の問題なのかもしれません。

質問者が選んだベストアンサー

  • ベストアンサー
  • hiodraiu
  • ベストアンサー率15% (451/2846)
回答No.2

パスの文字列に格納領域が1は静的領域ですが、2は動的領域ですね。 CreateProcessの仕様を見ると、第2パラメータの型はLPTSTRとなっています。これは動的領域ってことですよね。静的領域が要求されている場合だとLPCTSTRになるはずですよね。 ただ、この違いで動作が変わるって例をあまり知らないです。第2パラメータの領域が関数内で一時的に書換えられたりするんでしょうかね。

koi1234
質問者

お礼

なるほど  正直な処 これまで動的・静的にそこまで気を使っていませんでした >この違いで動作が変わるって例をあまり知らないです ですよね 固定で書いてある例が動いたりしているので????状態だったのですが これからもっとパラメータに注意したいと思います UNICOD指定した時はより注意しないと危ないな   と実感しました (ほとんどマルチバイトで書いていた)

その他の回答 (1)

  • maiko0333
  • ベストアンサー率19% (839/4401)
回答No.1

そのように書かなければならないと覚えてください。 LPTSTR の第2引数はTEXT("C:\\Windows\\Notepad")ではなくて、 LPTSTRで定義されたszCmdlineであると。

koi1234
質問者

お礼

回答ありがとうございます そのように書かなければならない  とのことですが ネット上のサンプル検索では実際に1のパターンで記載しているものもあり 手元で同じコードを実行したところ動いています http://www.kumei.ne.jp/c_lang/intro2/no_113.htm 違いとすればコンソールアプリ(マルチバイト)か Win32アプリ(Unicode)の違いくらいです もしマルチバイト/Unicodeで動きが違うのであればそういうものだ ではなくてバグの一種ではないかと思うのですがどうなのでしょうか?