1

指さした場所の住所が変わり続けるのはなぜですか? printfこれを発生させる記憶の中で何が起こっているのですか、それとも私の発言に何か問題がありますか?

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

int main()
{

        char blocks[3] = {'A', 'B', 'C'};

        char *ptr = &blocks[0];

        char temp;

        temp = blocks[0];
        printf(" %c, %d ", temp, &temp);

        return 0;
}

出力

A, 1764940775 
A, 1731746791 
4

2 に答える 2

2

スタック ポインタがランダム化されているようです。これは、ほとんどの新しいオペレーティング システムでセキュリティ メカニズムとして使用されている Address Space Layout Randomization によるものと思われます。

于 2013-04-10T03:30:31.273 に答える
0

%pポインター値を出力するには、変換指定子を使用する必要があります。しかし、毎回同じ値であると期待する理由はありません。ただし、グローバル変数または静的変数は一貫した場所にある必要があります。

于 2013-04-10T03:28:17.903 に答える