0

DevC++で作成された次のプログラムがあります。

#include <stdio.h>
#include <stdlib.h>
#include<string.h>


#define MAX_STRING_LEN 80

int main(int argc, char *argv[])
{
     char* S1 = "cccc";
     char* S2 = "dddd";

     int i, l;

     S2 = S1;
     S1[0] = S1[1] = S1[2] = '*';
     S1[3] = 0;
     printf("S1:\t%s\n",S1);
     printf("S2:\t%s\n",S2);

     system("PAUSE");   
     return 0;
 }

しかし、それを実行すると、プログラムがハングします。実際には、Dev C++4.9.2とWindows7を使用しています。何が問題なのでしょうか。

4

1 に答える 1

2

char* S1 = "cccc";実際には、const char*読み取り専用のメモリを指すaを宣言しています。行のこれらの文字列への書き込み

S1[0] = S1[1] = S1[2] = '*';

未定義の動作を与え、一部のプラットフォームでクラッシュします。

于 2012-11-13T19:43:29.557 に答える