Cのメモリー割り当て

/**************プログラミング概要*******************/
/**********Cはメモリーをどう使うか**************/

/*アドレスの表示*/
function1のアドレスは'00401150' ⇒関数function1( )のアドレス
function2のアドレスは'0040117A' ⇒関数function2( )のアドレス
文字数リテラルのアドレスは'0040A20E' ⇒文字数リテラル
function1_static_variableのアドレスは'0040C5BC' ⇒関数function1内のstatic変数
function2_static_variableのアドレスは'0040C5C0' ⇒関数function2内のstatic変数
file_static_variable(グローバル変数)のアドレスは'0040C5C8' ⇒ファイル内のstatic変数
global_variable(グローバル変数)のアドレスは'0040C5C4' ⇒グローバル変数
mallocのアドレスは'012F2A60' ⇒malloc( )により確保された領域
function1_variableのアドレスは'0012FF44' ⇒function1( )での自動変数
function2_variableのアドレスは'0012FF44' ⇒function2( )での自動変数

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

int global_variable;
static file_static_variable;

void function1( )
{
int function1_variable;
static int function1_static_variable;

printf("function1_variableのアドレスは%p\n",&function1_variable);

printf("function1_static_variableのアドレスは%p\n",&function1_static_variable);
}

void function2( )
{
int function2_variable;
static int function2_static_variable;

printf("function2_variableのアドレスは%p\n",&function2_variable); 

printf("function2_static_variableのアドレスは%p\n",&function2_static_variable);
}

int main_foejls(void)
{
int *p;
//関数へのポインタ表示
printf("function1のアドレスは%p\n",function1);

printf("function2のアドレスは%p\n",function2);

printf("文字数リテラルのアドレスは%p\n","abc");

printf("global_variable(グローバル変数)のアドレスは%p\n",&global_variable);

//ファイル内static変数のアドレス表示
printf("file_static_variable(グローバル変数)のアドレスは%p\n",&file_static_variable);

//ローカル変数の表示
function1( );

function2( );

//mallocにより確保した領域のアドレス
p=malloc(sizeof(int));
printf("mallocのアドレスは%p\n",p);

return 0;
}

Nikkei225

28000-28550 up in the early session, down lately.