なぜ新しいmallocとfreeとオープン配列がオフに削除することができますか?

なぜ自由と削除(またはコースのことは基本的なコール無料)その場合は空白の配列を解放することができます。

書き込みテストコード:

#include <入出力ストリーム>
 の#define N 16
 使って 名前空間STDを、
int型のmain()
{ 
    int型 * P =(INT *()はmallocはsizeofINT)* N))。
    以下のためにINT iが= 0 ; I <N; ++ I){ 
        P [I] = I。
    } 
    フリー(P)。
    リターン 0 ; 
}

実行とp個のメモリの場所に配置します:

 

 ああ、という配列fdfdfdfdの前で何ですか?前にいくつかの数字はわからないが、再び存在し、再試行してください。

32へのN:

 

 64へのN:

 

 Nは128に変更されました:

 

 まあ、01はフロントかもしれないと、これは新しいオープンメモリまたはヒープメモリの表示と同様に、オープン配列のサイズは何の関係も、除外していないことを示しています。図9Aは、最終的な面であり、アレイサイズの独立。

この図の残りの真ん中:

40 --- N = 16

80 --- N = 32

0001 --- N = 64

0002 --- N = 128

これは、4 4 int型を参照する必要があります。4×4 = 16

図8は8 INT、8×4 = 32を参照します

0x10の(十進数16)手段16 * 4 = 64

0x20の(十進数32)手段32 * 4 = 128

これらの値は、それを回す理由として、私は知って取得できませんでした。通常のX86は、リトルエンディアンのマシン、小数の1->六角00000001です。次にバイト逆順は、上記の図から明らかである01万人。しかしながら、上記の例は、実際にはビット単位ではなくバイトの逆の順序よりも、直接的に逆です。それについて私に言った友人についてあり、コメントすることができます。

 

別の知識:新しいオープン空きヒープ領域を解放することができますが、適切なデストラクタを呼び出すことはありません。だから、タイプ、無料の完了を内蔵しており、(int型、ダブル、など、同じ効果削除した場合、配列など)。あなたは自作(STLを含むだけでなく、内部またはポインタ)タイプであれば、リリースを完了することができません。

おすすめ

転載: www.cnblogs.com/FdWzy/p/12460048.html