5.29時間の研究パンチ(malloc関数ポインタがトラップを通過しています)

最初の例を与えます

する#include <stdio.hに> 
する#include <STDLIB.H> 

のtypedef 構造体{ 

    int型データを【のMaxSize];
     // 要素スタック保存
    INT トップ;
     // スタックポインタ
} SqStack; 

// スタック初期化
ボイド InitStackを(SqStack * ST){ 
    ST =(SqStack *)はmalloc(はsizeof (SqStack)); 
    ST - >トップ= 0 ; 
    のprintf(" 初期化スタック完全なN- \ " ); 
} 

int型のmain(){ 
    SqStack * ST; 
    InitStack(ST)。
        printf("%のD "、ST-> 上); 
}

これは、初期化シーケンスのスタックであるが、実行は、私たちが聖初期化機能、その割り当てられたスペースの初期化関数に渡されたパラメータとしてポインタをスタックします場合でも、最後のprintf文は、実行されなかった発見しますが、原因を再アドレスのmallocそれは、元のパラメータではありませんので、操作後の割り当て、操作を行いました。

 

おすすめ

転載: www.cnblogs.com/L1Gd0ng/p/10947373.html