2012年1月26日木曜日

[C/C++] 新・明解C++入門編 7-5「オブジェクトの動的な生成」

書籍「新・明解C++入門編 (明解シリーズ)」の中に収められているプログラム等を実際にコンパイル,実行してみた際のメモです.

List 7-16
#include <iostream>

using namespace std;

int main()
{
  int* x = new int;
  cout << "Input Integer: ";
  cin >> *x; 
  cout << "*x = " << *x << '\n';
  delete x;

}
コンパイル,実行結果:
$ g++ List7-16.cpp
$ ./a.out
Input Integer: 6
*x = 6

List 7-17
#include <iostream>

using namespace std;

int main()
{
  int* x = new int(5);
  cout << "*x = " << *x << '\n'
  delete x;

}
コンパイル,実行結果:
$ g++ List7-17.cpp
Mini:desktop hide$ ./a.out
*x = 5


List 7-18
#include <iostream>


using namespace std;

int main()
{
  int asize;
  cout << "Number of elements: ";
  cin >> asize;
  int* a = new int[asize];
  for (int i = 0; i < asize; i++)
    a[i] = i;
  for (int i = 0; i < asize; i++)
    cout << "a[" << i << "] = " << a[i] << '\n';
  delete[] a; 

}
コンパイル,実行結果:
$ g++ List7-18.cpp
$ ./a.out
Number of elements: 5
a[0] = 0
a[1] = 1
a[2] = 2
a[3] = 3
a[4] = 4


List 7-19
#include <new>
#include <iostream>

using namespace std;

int main()
{
  cout << "30000 double array. \n";
  while (true) {
    try {
      double* a = new double[30000];
    }
    catch (bad_alloc) {
      cout << "Stop program. \n";
      return 1
    }
  }

}
コンパイル,実行結果:
$ g++ List7-19.cpp
$ ./a.out
Number of element 3000 double 
Killed: 9


List 7-20
#include <cstddef>
#include <iostream>

using namespace std;

int main()
{
  cout << "Number of element 3000 double \n";
  while (true) {
    double* a = new(nothrow) double[30000];
    if (a == NULL) {
      cout << "Stop program. \n";
      return 1
    }
  }
}
コンパイル,実行結果:
$ g++ List7-20.cpp
$ ./a.out
Number of element 3000 double 
Killed: 9

0 件のコメント :

コメントを投稿