1.新しい/削除
Cの動的メモリ割り当て++
- 新しいキーワードによるC ++動的なメモリ割り当て
- C ++動的メモリ割り当てはの種類に基づいて行われます
- メモリ解放のためのキーを削除します
//变量申请与释放
Type *pointer = new Type;
delete pointer;
//数组申请与释放
Type *pointer = new Type[N];
delete[] pointer;
#include <stdio.h>
int main()
{
int *p = new int;
*p = 5;
*p = *p + 10;
printf("p = %p\n", p);
printf("*p = %d\n", *p);
delete p;
p = new int[5];
for (int i = 0; i < 5; i++)
{
p[i] = i + 1;
printf("p[%d] = %d\n", i, p[i]);
}
delete[] p;
return 0;
}
新しいキーワードやmalloc関数の違い
- 新しいキーワードは、C ++言語の一部であります
- Cコンパイラはライブラリ関数を提供しない場合Cライブラリ関数mallocは、提供され、そのダイナミックメモリアロケーションできないことを意味します
- のメモリアロケーションユニットの特定の新しいタイプで
- mallocのバイトメモリアロケーションユニット
- 新しいアプリケーションは、次のようなとき、単一の型変数、初期化することができる
int *pi = new int(1)
、char *pc = new char('c')
など - malloc関数のメモリ初期化の特性を持っていない、唯一のcalloc
2.名前空間
C言語でのみグローバルスコープ、すべて同じグローバル識別子グローバルスコープを共有し、そして識別子の間ことが可能競合。
この問題を解決するために、C ++が提案している名前空間の概念を。
- 名前空間の異なる部分にグローバルスコープを
- 異なる名前空間識別子は、競合することなく、同じ名前であってもよいです
- 名前空間は、お互いの中に入れ子にすることができます
- 知られているグローバルスコープ、デフォルトの名前空間
以下のためのC ++の名前空間の定義方法
namespace Name
{
//......
}
以下のためのC ++の名前空間を使用しますusing namespace name;
- 全体のネームスペースを使用します。
using namespace name;
- 名前空間の変数を使用します:
using name::variablel
- 変数のデフォルトの名前空間を使用します。
::variable
#include <stdio.h>
namespace First
{
int i = 0;
};
namespace Second
{
int i = 1;
namespace Internal
{
struct P
{
int x;
int y;
};
}
}
int main()
{
using namespace First;
using Second::Internal::P;
printf("First::i = %d\n", i);
printf("Second::i = %d\n", Second::i);
P p = {2, 3};
printf("p.x = %d\n", p.x);
printf("p.y = %d\n", p.y);
return 0;
}