DOSプログラムが完全に終わらないかもしれない
コンソールのアプリケーションとかバッチフアイルとかで遊んでいると、
MS-DOSプロンプトのウインドウを閉じようとした時に、
保存していないデータは全て失われます
といったようなダイアログが表示されることがあります。
exitなど、コマンドが完全に終了していない問題に近そうな現象が起こりました。
#include <stdio.h>
#include <stdlib.h>
int main() {
char str[2000] = "a", *p;
system("dir");
if(*str)return 0;
p = str;
return 0;
}
これをC++でなくC言語としてコンパイルしました。
最後の2行は実行されません。なのに、この部分は結果に影響します。
str[2000]では問題は起きませんでした。
str[3000]ぐらいから、この実行ファイルを実行しても、何も起こらず
次のプロンプトが表示されたり、
正しいコマンド インタープリタの名前を入力してください. (例 : C:\COMMAND.COM)
>>
と表示されたりします。
ソースの最初のreturn 0;は実行されます。それなのに、その後に
p = str;が実行され、strの確保容量によってエラーになるようです。
ソースに間違いはありませんよね?
使用したコンパイラLSI自身のエラーなのでしょうか?
system("dir");の次に、exitのようなものが必要なのでしょうか?
お礼
ばっちり動きました ありごとうございました