<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-2%3Adcho040</id>
	<title>SE250:lab-2:dcho040 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.kram.nz/index.php?action=history&amp;feed=atom&amp;title=SE250%3Alab-2%3Adcho040"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:dcho040&amp;action=history"/>
	<updated>2026-04-29T09:01:16Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.45.3</generator>
	<entry>
		<id>https://wiki.kram.nz/index.php?title=SE250:lab-2:dcho040&amp;diff=4808&amp;oldid=prev</id>
		<title>Mark: 38 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:dcho040&amp;diff=4808&amp;oldid=prev"/>
		<updated>2008-11-03T05:18:56Z</updated>

		<summary type="html">&lt;p&gt;38 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introduction=&lt;br /&gt;
To get more information about the memory, all the codes of questions are gethered in one source file. &lt;br /&gt;
=codes=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#define _CRT_SECURE_NO_DEPRECATE&lt;br /&gt;
#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
/* Q1_S*/&lt;br /&gt;
typedef struct {&lt;br /&gt;
	int struct_int_1;&lt;br /&gt;
	double struct_doube_1;&lt;br /&gt;
} type_struct;&lt;br /&gt;
/* Q1_F */&lt;br /&gt;
&lt;br /&gt;
/* Q4_S */&lt;br /&gt;
int x_4;&lt;br /&gt;
char arr_4[4]; //change arr_4[x] x=0 to 10&lt;br /&gt;
int y_4;&lt;br /&gt;
/* Q4_F */&lt;br /&gt;
&lt;br /&gt;
/* Q6_S */&lt;br /&gt;
char *local_str_6() {&lt;br /&gt;
	char s_6[8] = &amp;quot;0123456&amp;quot;;&lt;br /&gt;
	printf(&amp;quot;  s(local)  = %p(%s)\n&amp;quot;, s_6, s_6);&lt;br /&gt;
	return s_6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *local_str2_6() {&lt;br /&gt;
	char s_6[8] = &amp;quot;abcdefg&amp;quot;;&lt;br /&gt;
	printf(&amp;quot;  s(local2) = %p(%s)\n&amp;quot;, s_6, s_6);&lt;br /&gt;
	return s_6;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *static_str_6() {&lt;br /&gt;
	static char s_6[8] = &amp;quot;tuvwxyz&amp;quot;;&lt;br /&gt;
	printf(&amp;quot;  s(static) = %p(%s)\n&amp;quot;, s_6, s_6);&lt;br /&gt;
	return s_6;&lt;br /&gt;
}&lt;br /&gt;
char *malloc_str_6() {&lt;br /&gt;
	char *s_6 = malloc(8);&lt;br /&gt;
	strcpy(s_6, &amp;quot;hijklmn&amp;quot;);&lt;br /&gt;
	printf(&amp;quot;  s(malloc) = %p(%s)\n&amp;quot;, s_6, s_6);&lt;br /&gt;
	return s_6;&lt;br /&gt;
}&lt;br /&gt;
/* Q6_F */&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
	/* Q1_S */&lt;br /&gt;
	int *ip_1;&lt;br /&gt;
	int int_1;&lt;br /&gt;
	long long_1;&lt;br /&gt;
	short short_1;&lt;br /&gt;
	float float_1;&lt;br /&gt;
	double double_1;&lt;br /&gt;
	char string_1[10];&lt;br /&gt;
	int array_1[5];&lt;br /&gt;
	type_struct struct_1;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;1.type pointers(bytes)\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of int pointer     = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of string pointer = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of array pointer  = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of struct pointer = %d\n\n&amp;quot;&lt;br /&gt;
			,sizeof(ip_1), sizeof(&amp;amp;string_1), sizeof(&amp;amp;array_1), sizeof(&amp;amp;struct_1));&lt;br /&gt;
	printf(&amp;quot; values(bytes)\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of int      = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of long   = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of short  = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of float  = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of double = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of string(10 chars)     = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of array (5 ints)          = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; size of struct(int + double) = %d\n\n&amp;quot;&lt;br /&gt;
			, sizeof(int_1), sizeof(long_1), sizeof(short_1), sizeof(float_1)&lt;br /&gt;
			, sizeof(double_1), sizeof(string_1), sizeof(array_1), sizeof(struct_1));&lt;br /&gt;
	/* Q1_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q2_S */&lt;br /&gt;
	int x_2;&lt;br /&gt;
	int y_2;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;2.address differences\n&amp;quot;&lt;br /&gt;
			&amp;quot; &amp;amp;x = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; &amp;amp;y = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; input value arr[4] = 10\n&amp;quot;&lt;br /&gt;
			&amp;quot; address diff(long)&amp;amp;x-(long)&amp;amp;y) = %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; ints    diff(long)(&amp;amp;x-&amp;amp;y)         = %ld\n\n&amp;quot;&lt;br /&gt;
			, &amp;amp;x_2, &amp;amp;x_2, &amp;amp;y_2, &amp;amp;y_2&lt;br /&gt;
			, (long)&amp;amp;x_2-(long)&amp;amp;y_2, (long)(&amp;amp;x_2-&amp;amp;y_2));&lt;br /&gt;
	/* Q2_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q3_S */&lt;br /&gt;
	int x_3;&lt;br /&gt;
	char arr_3[4]=&amp;quot;abc&amp;quot;; //change arr_3[x] x=0 to 10&lt;br /&gt;
	int y_3;&lt;br /&gt;
	int *p_x_3;&lt;br /&gt;
	char *p_arr_3;&lt;br /&gt;
	int *p_y_3;&lt;br /&gt;
	p_x_3 = &amp;amp;x_3;&lt;br /&gt;
	p_arr_3 = arr_3; //&amp;amp;arr_3( incompatible pointer type)&lt;br /&gt;
	p_y_3 = &amp;amp;y_3;&lt;br /&gt;
	x_3 = 20;&lt;br /&gt;
	y_3 = 30;&lt;br /&gt;
	arr_3[4] = 10;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;3. addresses\n&amp;quot;&lt;br /&gt;
			&amp;quot; about x(20)(then arr[4] = 10)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of x      = %d \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;x   = %p(%d) \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_x   = %p(%d) \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of *p_x  = %d \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;p_x = %p(%d)\n\n&amp;quot;&lt;br /&gt;
			,x_3, &amp;amp;x_3, &amp;amp;x_3,  p_x_3, p_x_3,  *p_x_3, &amp;amp;p_x_3, &amp;amp;p_x_3);&lt;br /&gt;
	printf(&amp;quot; about arr[4](abc)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr    = %s &amp;amp;arr    = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr[0] = %c, &amp;amp;arr[0] = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr[1] = %c, &amp;amp;arr[1] = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr[2] = %c, &amp;amp;arr[2] = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr[3] = %c, &amp;amp;arr[3] = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr[4] = %c, &amp;amp;arr[4] = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_arr    = %p(%d), &amp;amp;p_arr = %p(%d), *p_arr  = %c \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_arr[0] = %c, &amp;amp;p_arr[0] = %p(%d), p_arr + 0 = %p(%d) \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_arr[1] = %c, &amp;amp;p_arr[1] = %p(%d), p_arr + 1 = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_arr[2] = %c, &amp;amp;p_arr[2] = %p(%d), p_arr + 2 = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_arr[3] = %c, &amp;amp;p_arr[3] = %p(%d), p_arr + 3 = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_arr[4] = %c, &amp;amp;p_arr[4] = %p(%d), p_arr + 4 = %p(%c)\n\n&amp;quot;&lt;br /&gt;
			, arr_3, &amp;amp;arr_3, &amp;amp;arr_3&lt;br /&gt;
			, arr_3[0], &amp;amp;arr_3[0], &amp;amp;arr_3[0]&lt;br /&gt;
			, arr_3[1], &amp;amp;arr_3[1], &amp;amp;arr_3[1]&lt;br /&gt;
			, arr_3[2], &amp;amp;arr_3[2], &amp;amp;arr_3[2]&lt;br /&gt;
			, arr_3[3], &amp;amp;arr_3[3], &amp;amp;arr_3[3]&lt;br /&gt;
			, arr_3[4], &amp;amp;arr_3[4], &amp;amp;arr_3[4]&lt;br /&gt;
			, p_arr_3, p_arr_3, &amp;amp;p_arr_3, &amp;amp;p_arr_3, *p_arr_3&lt;br /&gt;
			, p_arr_3[0], &amp;amp;p_arr_3[0], &amp;amp;p_arr_3[0], p_arr_3+0, p_arr_3+0  // no *p_arr_3[0], &amp;amp;p_arr_3+0&lt;br /&gt;
			, p_arr_3[1], &amp;amp;p_arr_3[1], &amp;amp;p_arr_3[1], p_arr_3+1, p_arr_3+1&lt;br /&gt;
			, p_arr_3[2], &amp;amp;p_arr_3[2], &amp;amp;p_arr_3[2], p_arr_3+2, p_arr_3+2&lt;br /&gt;
			, p_arr_3[3], &amp;amp;p_arr_3[3], &amp;amp;p_arr_3[3], p_arr_3+3, p_arr_3+3&lt;br /&gt;
			, p_arr_3[4], &amp;amp;p_arr_3[4], &amp;amp;p_arr_3[4], p_arr_3+4, p_arr_3+4);&lt;br /&gt;
	printf(&amp;quot; about y(30)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of y      = %d \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;y    = %p(%d) \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p_y   = %p(%d) \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of *p_y  = %d \n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;p_y = %p(%d) \n\n&amp;quot;&lt;br /&gt;
			,y_3, &amp;amp;y_3, &amp;amp;y_3,  p_y_3, p_y_3,  *p_y_3, &amp;amp;p_y_3, &amp;amp;p_y_3);&lt;br /&gt;
	/* Q3_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q4_S */&lt;br /&gt;
	x_4 = 20;&lt;br /&gt;
	y_4 = 30;&lt;br /&gt;
	arr_4[4] = 10;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;4. address of arr_4 as global variables\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;x      = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;y      = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr      = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;arr    = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of arr + 4 = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;arr[4] = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of x(20)   = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of y(30)   = %d\n\n&amp;quot;&lt;br /&gt;
			, &amp;amp;x_4, &amp;amp;x_4, &amp;amp;y_4, &amp;amp;y_4, &amp;amp;arr_4, &amp;amp;arr_4, arr_4, arr_4, arr_4 + 4, arr_4 +4&lt;br /&gt;
			, &amp;amp;arr_4[4], &amp;amp;arr_4[4], x_4, y_4);&lt;br /&gt;
	/* Q4_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q5_S */&lt;br /&gt;
	printf(&amp;quot;5. value of pointer p1 and p2\n&amp;quot;);&lt;br /&gt;
	int *p1_5, *p2_5;&lt;br /&gt;
&lt;br /&gt;
	printf( &amp;quot; value of &amp;amp;p1   = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;p2   = %p(%d)\n&amp;quot;&lt;br /&gt;
			, &amp;amp;p1_5, &amp;amp;p1_5, &amp;amp;p2_5, &amp;amp;p2_5);&lt;br /&gt;
&lt;br /&gt;
	{&lt;br /&gt;
		int q_5=10; p1_5 = &amp;amp;q_5;&lt;br /&gt;
		printf(&amp;quot; {value of &amp;amp;q = %p(%d) p1 -&amp;gt; q=10}\n&amp;quot;, &amp;amp;q_5, &amp;amp;q_5);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	{&lt;br /&gt;
		int r_5=20; p2_5 = &amp;amp;r_5;&lt;br /&gt;
		printf(&amp;quot; {value of &amp;amp;r = %p(%d) p2 -&amp;gt; r=20}\n&amp;quot;, &amp;amp;r_5, &amp;amp;r_5);&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	int next_5, next2_5;&lt;br /&gt;
&lt;br /&gt;
	printf( &amp;quot; value of p1    = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of p2    = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of *p1   = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of *p2   = %d\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;next  = %p(%d)\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;next2 = %p(%d)\n\n&amp;quot;&lt;br /&gt;
			, p1_5, p1_5, p2_5, p2_5, *p1_5, *p2_5, &amp;amp;next_5, &amp;amp;next_5, &amp;amp;next2_5, &amp;amp;next2_5);&lt;br /&gt;
	/* Q5_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q6_S */&lt;br /&gt;
	char *sp_6;&lt;br /&gt;
	printf(&amp;quot;6. strings\n&amp;quot;);&lt;br /&gt;
	sp_6 = local_str_6();&lt;br /&gt;
	printf(&amp;quot; sp         = %p(%s)\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
	strcpy(sp_6, &amp;quot;XXXXXXX&amp;quot;);&lt;br /&gt;
	printf(&amp;quot; sp  X&amp;#039;d   = %p(%s)\n\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
&lt;br /&gt;
	sp_6 = local_str_6();&lt;br /&gt;
	local_str2_6();&lt;br /&gt;
	printf(&amp;quot; sp         = %p(%s)\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
	strcpy(sp_6, &amp;quot;XXXXXXX&amp;quot;);&lt;br /&gt;
	printf(&amp;quot; sp  X&amp;#039;d   = %p(%s)\n\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
&lt;br /&gt;
	sp_6 = static_str_6();&lt;br /&gt;
	local_str2_6();&lt;br /&gt;
	printf(&amp;quot; sp         = %p(%s)\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
	strcpy(sp_6, &amp;quot;XXXXXXX&amp;quot;);&lt;br /&gt;
	printf(&amp;quot; sp  X&amp;#039;d   = %p(%s)\n\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
&lt;br /&gt;
	sp_6 = malloc_str_6();&lt;br /&gt;
	local_str2_6();&lt;br /&gt;
	printf(&amp;quot; sp         = %p(%s)\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
	strcpy(sp_6, &amp;quot;XXXXXXX&amp;quot;);&lt;br /&gt;
	printf(&amp;quot; sp  X&amp;#039;d   = %p(%s)\n\n&amp;quot;, sp_6, sp_6);&lt;br /&gt;
	/* Q6_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q7_S */&lt;br /&gt;
	struct {&lt;br /&gt;
		char   my_char_7;&lt;br /&gt;
		short  my_short_7;&lt;br /&gt;
		int    my_int_7;&lt;br /&gt;
		long   my_long_7;&lt;br /&gt;
		float  my_float_7;&lt;br /&gt;
		double my_double_7;&lt;br /&gt;
	} my_struct_7;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;7. struct\n &amp;amp;my_struct_7  = %p(%d)\n&amp;quot;,&amp;amp;my_struct_7, &amp;amp;my_struct_7);&lt;br /&gt;
	printf(&amp;quot; offset:\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_char    addr: %p(%d) diff: %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_short   addr: %p(%d) diff: %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_int      addr: %p(%d) diff: %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_long    addr: %p(%d) diff: %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_float    addr: %p(%d) diff: %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_double addr: %p(%d) diff: %ld\n\n&amp;quot;&lt;br /&gt;
			,&amp;amp;my_struct_7.my_char_7, &amp;amp;my_struct_7.my_char_7&lt;br /&gt;
			,(long)&amp;amp;my_struct_7 - (long)&amp;amp;my_struct_7.my_char_7&lt;br /&gt;
			,&amp;amp;my_struct_7.my_short_7, &amp;amp;my_struct_7.my_short_7&lt;br /&gt;
			,(long)&amp;amp;my_struct_7 - (long)&amp;amp;my_struct_7.my_short_7&lt;br /&gt;
			,&amp;amp;my_struct_7.my_int_7, &amp;amp;my_struct_7.my_int_7&lt;br /&gt;
			,(long)&amp;amp;my_struct_7 - (long)&amp;amp;my_struct_7.my_int_7&lt;br /&gt;
			,&amp;amp;my_struct_7.my_long_7, &amp;amp;my_struct_7.my_long_7&lt;br /&gt;
			,(long)&amp;amp;my_struct_7 - (long)&amp;amp;my_struct_7.my_long_7&lt;br /&gt;
			,&amp;amp;my_struct_7.my_float_7, &amp;amp;my_struct_7.my_float_7&lt;br /&gt;
			,(long)&amp;amp;my_struct_7 - (long)&amp;amp;my_struct_7.my_float_7&lt;br /&gt;
			,&amp;amp;my_struct_7.my_double_7, &amp;amp;my_struct_7.my_double_7&lt;br /&gt;
			,(long)&amp;amp;my_struct_7 - (long)&amp;amp;my_struct_7.my_double_7 );&lt;br /&gt;
	/* Q7_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q8_S */&lt;br /&gt;
	union {&lt;br /&gt;
		char   my_char_8;&lt;br /&gt;
		short  my_short_8;&lt;br /&gt;
		int    my_int_8;&lt;br /&gt;
		long   my_long_8;&lt;br /&gt;
		float  my_float_8;&lt;br /&gt;
		double my_double_8;&lt;br /&gt;
	} my_union_8;&lt;br /&gt;
	my_union_8.my_char_8   =&amp;#039;a&amp;#039;;&lt;br /&gt;
	my_union_8.my_short_8  =  1;&lt;br /&gt;
	my_union_8.my_int_8    =  2;&lt;br /&gt;
	my_union_8.my_long_8   =  3;&lt;br /&gt;
	my_union_8.my_float_8  =4.1;&lt;br /&gt;
	my_union_8.my_double_8 =5.2;&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;8. union\n&amp;quot;&lt;br /&gt;
	        &amp;quot;  my_union_8.my_char_8     = &amp;#039;a&amp;#039;;\n&amp;quot;&lt;br /&gt;
			&amp;quot;  my_union_8.my_short_8    =   1;\n&amp;quot;&lt;br /&gt;
			&amp;quot;  my_union_8.my_int_8         =   2;\n&amp;quot;&lt;br /&gt;
			&amp;quot;  my_union_8.my_long_8      =   3;\n&amp;quot;&lt;br /&gt;
			&amp;quot;  my_union_8.my_float_8      = 4.1;\n&amp;quot;&lt;br /&gt;
			&amp;quot;  my_union_8.my_double_8  = 5.2;\n\n&amp;quot;&lt;br /&gt;
			&amp;quot; &amp;amp;my_union_8   = %p(%d)\n&amp;quot;&lt;br /&gt;
			, &amp;amp;my_union_8, &amp;amp;my_union_8);&lt;br /&gt;
	printf(&amp;quot; offset:\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_char   addr: %p(%d)  diff: %ld value: %c \n&amp;quot;&lt;br /&gt;
			&amp;quot; my_short  addr: %p(%d)  diff: %ld value: %d \n&amp;quot;&lt;br /&gt;
			&amp;quot; my_int    addr: %p(%d)   diff: %ld value: %d \n&amp;quot;&lt;br /&gt;
			&amp;quot; my_long   addr: %p(%d)  diff: %ld value: %ld\n&amp;quot;&lt;br /&gt;
			&amp;quot; my_float  addr: %p(%d)   diff: %ld value: %f \n&amp;quot;&lt;br /&gt;
			&amp;quot; my_double addr: %p(%d) diff: %ld value: %lf\n\n&amp;quot;&lt;br /&gt;
			,&amp;amp;my_union_8.my_char_8, &amp;amp;my_union_8.my_char_8&lt;br /&gt;
			,(long)&amp;amp;my_union_8 - (long)&amp;amp;my_union_8.my_char_8&lt;br /&gt;
			,my_union_8.my_char_8&lt;br /&gt;
			,&amp;amp;my_union_8.my_short_8, &amp;amp;my_union_8.my_short_8&lt;br /&gt;
			,(long)&amp;amp;my_union_8 - (long)&amp;amp;my_union_8.my_short_8&lt;br /&gt;
			,my_union_8.my_short_8&lt;br /&gt;
			,&amp;amp;my_union_8.my_int_8, &amp;amp;my_union_8.my_int_8&lt;br /&gt;
			,(long)&amp;amp;my_union_8 - (long)&amp;amp;my_union_8.my_int_8&lt;br /&gt;
			,my_union_8.my_int_8&lt;br /&gt;
			,&amp;amp;my_union_8.my_long_8, &amp;amp;my_union_8.my_long_8&lt;br /&gt;
			,(long)&amp;amp;my_union_8 - (long)&amp;amp;my_union_8.my_long_8&lt;br /&gt;
			,my_union_8.my_long_8&lt;br /&gt;
			,&amp;amp;my_union_8.my_float_8, &amp;amp;my_union_8.my_float_8&lt;br /&gt;
			,(long)&amp;amp;my_union_8 - (long)&amp;amp;my_union_8.my_float_8&lt;br /&gt;
			,my_union_8.my_float_8&lt;br /&gt;
			,&amp;amp;my_union_8.my_double_8, &amp;amp;my_union_8.my_double_8&lt;br /&gt;
			,(long)&amp;amp;my_union_8 - (long)&amp;amp;my_union_8.my_double_8&lt;br /&gt;
			,my_union_8.my_double_8);&lt;br /&gt;
	/* Q8_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q9_S */&lt;br /&gt;
	char *sp1_9, *sp2_9, *sp3_9;&lt;br /&gt;
	sp1_9=(char*)malloc(10);&lt;br /&gt;
	int i;&lt;br /&gt;
	// sp1_9 &amp;lt;- {a b c d e f g h i j}&lt;br /&gt;
	for (i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		*(sp1_9 + i) = 97 + i;&lt;br /&gt;
	};&lt;br /&gt;
	// sp2_9 &amp;lt;- {k l m n o p q r s t}&lt;br /&gt;
	sp2_9=(char*)malloc(10);&lt;br /&gt;
	for (i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		*(sp2_9 + i) = 107 + i;&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	printf(&amp;quot;9. malloc and free\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;sp1 = %p(%d)&amp;quot;, sp1_9, sp1_9);&lt;br /&gt;
	for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		printf(&amp;quot;%3c&amp;quot;, *(sp1_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
	printf(&amp;quot;\n value of &amp;amp;sp2 = %p(%d)&amp;quot;, sp2_9, sp2_9);&lt;br /&gt;
		for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
			printf(&amp;quot;%3c&amp;quot;, *(sp2_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// free sp1_9&lt;br /&gt;
   free( sp1_9 );&lt;br /&gt;
   	printf(&amp;quot;\n free(sp1)\n&amp;quot;&lt;br /&gt;
   			&amp;quot; value of &amp;amp;sp1 = %p(%d)&amp;quot;, sp1_9, sp1_9);&lt;br /&gt;
   	for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
   		printf(&amp;quot;%3c&amp;quot;, *(sp1_9 + i));&lt;br /&gt;
   	}&lt;br /&gt;
   	printf(&amp;quot;\n value of &amp;amp;sp2 = %p(%d)&amp;quot;, sp2_9, sp2_9);&lt;br /&gt;
   		for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
   			printf(&amp;quot;%3c&amp;quot;, *(sp2_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
   // sp3_9 &amp;lt;- {u v w x y z}&lt;br /&gt;
	sp3_9=(char*)malloc(10);&lt;br /&gt;
	for (i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		*(sp3_9 + i) = 117 + i;&lt;br /&gt;
	};&lt;br /&gt;
	printf(&amp;quot;\n define sp3 and put values in sp3\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;sp1 = %p(%d)&amp;quot;, sp1_9, sp1_9);&lt;br /&gt;
	for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		printf(&amp;quot;%3c&amp;quot;, *(sp1_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
	printf(&amp;quot;\n value of &amp;amp;sp2 = %p(%d)&amp;quot;, sp2_9, sp2_9);&lt;br /&gt;
		for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
			printf(&amp;quot;%3c&amp;quot;, *(sp2_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
	printf(&amp;quot;\n value of &amp;amp;sp3 = %p(%d)&amp;quot;, sp3_9, sp3_9);&lt;br /&gt;
		for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
			printf(&amp;quot;%3c&amp;quot;, *(sp3_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
&lt;br /&gt;
	// sp1_9 &amp;lt;- {a b c d e f g h i j}&lt;br /&gt;
	for (i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		*(sp1_9 + i) = 97 + i;&lt;br /&gt;
	};&lt;br /&gt;
	printf(&amp;quot;\n put values in sp1\n&amp;quot;&lt;br /&gt;
			&amp;quot; value of &amp;amp;sp1 = %p(%d)&amp;quot;, sp1_9, sp1_9);&lt;br /&gt;
	for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
		printf(&amp;quot;%3c&amp;quot;, *(sp1_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
	printf(&amp;quot;\n value of &amp;amp;sp2 = %p(%d)&amp;quot;, sp2_9, sp2_9);&lt;br /&gt;
		for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
			printf(&amp;quot;%3c&amp;quot;, *(sp2_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
	printf(&amp;quot;\n value of &amp;amp;sp3 = %p(%d)&amp;quot;, sp3_9, sp3_9);&lt;br /&gt;
		for(i = 0; i &amp;lt; 10; i++){&lt;br /&gt;
			printf(&amp;quot;%3c&amp;quot;, *(sp3_9 + i));&lt;br /&gt;
	}&lt;br /&gt;
	printf(&amp;quot;\n\n&amp;quot;);&lt;br /&gt;
	/* Q9_F */&lt;br /&gt;
&lt;br /&gt;
	/* Q10_S */&lt;br /&gt;
	printf(&amp;quot;10. position of funcitons (using Q6)\n&amp;quot;);&lt;br /&gt;
	printf(&amp;quot; local_str     = %p(%d)\n&amp;quot;&lt;br /&gt;
				&amp;quot; local_str2    = %p(%d)\n&amp;quot;&lt;br /&gt;
				&amp;quot; static_str    = %p(%d)\n&amp;quot;&lt;br /&gt;
				&amp;quot; malloc_str   = %p(%d)\n&amp;quot;&lt;br /&gt;
				, local_str_6, local_str_6&lt;br /&gt;
				, local_str2_6, local_str2_6&lt;br /&gt;
				, static_str_6, static_str_6&lt;br /&gt;
				, malloc_str_6, malloc_str_6);&lt;br /&gt;
	/* Q10_F */&lt;br /&gt;
	return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Result=&lt;br /&gt;
==Vista==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.type pointers(bytes)&lt;br /&gt;
 size of int pointer     = 4&lt;br /&gt;
 size of string pointer = 4&lt;br /&gt;
 size of array pointer  = 4&lt;br /&gt;
 size of struct pointer = 4&lt;br /&gt;
&lt;br /&gt;
 values(bytes)&lt;br /&gt;
 size of int      = 4&lt;br /&gt;
 size of long   = 4&lt;br /&gt;
 size of short  = 2&lt;br /&gt;
 size of float  = 4&lt;br /&gt;
 size of double = 8&lt;br /&gt;
 size of string(10 chars)     = 10&lt;br /&gt;
 size of array (5 ints)          = 20&lt;br /&gt;
 size of struct(int + double) = 16&lt;br /&gt;
&lt;br /&gt;
2.address differences&lt;br /&gt;
 &amp;amp;x = 0x22cc5c(2280540)&lt;br /&gt;
 &amp;amp;y = 0x22cc58(2280536)&lt;br /&gt;
 input value arr[4] = 10&lt;br /&gt;
 address diff(long)&amp;amp;x-(long)&amp;amp;y) = 4&lt;br /&gt;
 ints    diff(long)(&amp;amp;x-&amp;amp;y)         = 1&lt;br /&gt;
&lt;br /&gt;
3. addresses&lt;br /&gt;
 about x(20)(then arr[4] = 10)&lt;br /&gt;
 value of x      = 10 &lt;br /&gt;
 value of &amp;amp;x   = 0x22cc54(2280532) &lt;br /&gt;
 value of p_x   = 0x22cc54(2280532) &lt;br /&gt;
 value of *p_x  = 10 &lt;br /&gt;
 value of &amp;amp;p_x = 0x22cc48(2280520)&lt;br /&gt;
&lt;br /&gt;
 about arr[4](abc)&lt;br /&gt;
 value of arr    = abc &amp;amp;arr    = 0x22cc50(2280528)&lt;br /&gt;
 value of arr[0] = a, &amp;amp;arr[0] = 0x22cc50(2280528)&lt;br /&gt;
 value of arr[1] = b, &amp;amp;arr[1] = 0x22cc51(2280529)&lt;br /&gt;
 value of arr[2] = c, &amp;amp;arr[2] = 0x22cc52(2280530)&lt;br /&gt;
 value of arr[3] =  , &amp;amp;arr[3] = 0x22cc53(2280531)&lt;br /&gt;
 value of arr[4] = &lt;br /&gt;
, &amp;amp;arr[4] = 0x22cc54(2280532)&lt;br /&gt;
 value of p_arr    = 0x22cc50(2280528), &amp;amp;p_arr = 0x22cc44(2280516), *p_arr  = a &lt;br /&gt;
 value of p_arr[0] = a, &amp;amp;p_arr[0] = 0x22cc50(2280528), p_arr + 0 = 0x22cc50(2280528) &lt;br /&gt;
 value of p_arr[1] = b, &amp;amp;p_arr[1] = 0x22cc51(2280529), p_arr + 1 = 0x22cc51(2280529)&lt;br /&gt;
 value of p_arr[2] = c, &amp;amp;p_arr[2] = 0x22cc52(2280530), p_arr + 2 = 0x22cc52(2280530)&lt;br /&gt;
 value of p_arr[3] =  , &amp;amp;p_arr[3] = 0x22cc53(2280531), p_arr + 3 = 0x22cc53(2280531)&lt;br /&gt;
 value of p_arr[4] = &lt;br /&gt;
, &amp;amp;p_arr[4] = 0x22cc54(2280532), p_arr + 4 = 0x22cc54(T)&lt;br /&gt;
&lt;br /&gt;
 about y(30)&lt;br /&gt;
 value of y      = 30 &lt;br /&gt;
 value of &amp;amp;y    = 0x22cc4c(2280524) &lt;br /&gt;
 value of p_y   = 0x22cc4c(2280524) &lt;br /&gt;
 value of *p_y  = 30 &lt;br /&gt;
 value of &amp;amp;p_y = 0x22cc40(2280512) &lt;br /&gt;
&lt;br /&gt;
4. address of arr_4 as global variables&lt;br /&gt;
 value of &amp;amp;x      = 0x405040(4214848)&lt;br /&gt;
 value of &amp;amp;y      = 0x405020(4214816)&lt;br /&gt;
 value of arr      = 0x405030(4214832)&lt;br /&gt;
 value of &amp;amp;arr    = 0x405030(4214832)&lt;br /&gt;
 value of arr + 4 = 0x405034(4214836)&lt;br /&gt;
 value of &amp;amp;arr[4] = 0x405034(4214836)&lt;br /&gt;
 value of x(20)   = 20&lt;br /&gt;
 value of y(30)   = 30&lt;br /&gt;
&lt;br /&gt;
5. value of pointer p1 and p2&lt;br /&gt;
 value of &amp;amp;p1   = 0x22cc3c(2280508)&lt;br /&gt;
 value of &amp;amp;p2   = 0x22cc38(2280504)&lt;br /&gt;
 {value of &amp;amp;q = 0x22cc34(2280500) p1 -&amp;gt; q=10}&lt;br /&gt;
 {value of &amp;amp;r = 0x22cc30(2280496) p2 -&amp;gt; r=20}&lt;br /&gt;
 value of p1    = 0x22cc34(2280500)&lt;br /&gt;
 value of p2    = 0x22cc30(2280496)&lt;br /&gt;
 value of *p1   = 10&lt;br /&gt;
 value of *p2   = 20&lt;br /&gt;
 value of &amp;amp;next  = 0x22cc2c(2280492)&lt;br /&gt;
 value of &amp;amp;next2 = 0x22cc28(2280488)&lt;br /&gt;
&lt;br /&gt;
6. strings&lt;br /&gt;
  s(local)  = 0x22cae0(0123456)&lt;br /&gt;
 sp         = 0x22cae0(늻)&lt;br /&gt;
 sp  X&amp;#039;d   = 0x22cae0(봈@)&lt;br /&gt;
&lt;br /&gt;
  s(local)  = 0x22cae0(0123456)&lt;br /&gt;
  s(local2) = 0x22cae0(abcdefg)&lt;br /&gt;
 sp         = 0x22cae0(늻)&lt;br /&gt;
 sp  X&amp;#039;d   = 0x22cae0(봈@)&lt;br /&gt;
&lt;br /&gt;
  s(static) = 0x403000(tuvwxyz)&lt;br /&gt;
  s(local2) = 0x22cae0(abcdefg)&lt;br /&gt;
 sp         = 0x403000(tuvwxyz)&lt;br /&gt;
 sp  X&amp;#039;d   = 0x403000(XXXXXXX)&lt;br /&gt;
&lt;br /&gt;
  s(malloc) = 0xde0158(hijklmn)&lt;br /&gt;
  s(local2) = 0x22cae0(abcdefg)&lt;br /&gt;
 sp         = 0xde0158(hijklmn)&lt;br /&gt;
 sp  X&amp;#039;d   = 0xde0158(XXXXXXX)&lt;br /&gt;
&lt;br /&gt;
7. struct&lt;br /&gt;
 &amp;amp;my_struct_7  = 0x22cc00(2280448)&lt;br /&gt;
 offset:&lt;br /&gt;
 my_char    addr: 0x22cc00(2280448) diff: 0&lt;br /&gt;
 my_short   addr: 0x22cc02(2280450) diff: -2&lt;br /&gt;
 my_int      addr: 0x22cc04(2280452) diff: -4&lt;br /&gt;
 my_long    addr: 0x22cc08(2280456) diff: -8&lt;br /&gt;
 my_float    addr: 0x22cc0c(2280460) diff: -12&lt;br /&gt;
 my_double addr: 0x22cc10(2280464) diff: -16&lt;br /&gt;
&lt;br /&gt;
8. union&lt;br /&gt;
  my_union_8.my_char_8     = &amp;#039;a&amp;#039;;&lt;br /&gt;
  my_union_8.my_short_8    =   1;&lt;br /&gt;
  my_union_8.my_int_8         =   2;&lt;br /&gt;
  my_union_8.my_long_8      =   3;&lt;br /&gt;
  my_union_8.my_float_8      = 4.1;&lt;br /&gt;
  my_union_8.my_double_8  = 5.2;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;my_union_8   = 0x22cbf8(2280440)&lt;br /&gt;
 offset:&lt;br /&gt;
 my_char   addr: 0x22cbf8(2280440)  diff: 0 value: ?&lt;br /&gt;
 my_short  addr: 0x22cbf8(2280440)  diff: 0 value: -13107 &lt;br /&gt;
 my_int    addr: 0x22cbf8(2280440)   diff: 0 value: -858993459 &lt;br /&gt;
 my_long   addr: 0x22cbf8(2280440)  diff: 0 value: -858993459&lt;br /&gt;
 my_float  addr: 0x22cbf8(2280440)   diff: 0 value: -107374184.000000 &lt;br /&gt;
 my_double addr: 0x22cbf8(2280440) diff: 0 value: 5.200000&lt;br /&gt;
&lt;br /&gt;
9. malloc and free&lt;br /&gt;
 value of &amp;amp;sp1 = 0xde01d0(14549456)  a  b  c  d  e  f  g  h  i  j&lt;br /&gt;
 value of &amp;amp;sp2 = 0xde01e0(14549472)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 free(sp1)&lt;br /&gt;
 value of &amp;amp;sp1 = 0xde01d0(14549456)  ? ? �  a  ? ? �  a  �   &lt;br /&gt;
 value of &amp;amp;sp2 = 0xde01e0(14549472)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 define sp3 and put values in sp3&lt;br /&gt;
 value of &amp;amp;sp1 = 0xde01d0(14549456)  u  v  w  x  y  z  {  |  }  ~&lt;br /&gt;
 value of &amp;amp;sp2 = 0xde01e0(14549472)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 value of &amp;amp;sp3 = 0xde01d0(14549456)  u  v  w  x  y  z  {  |  }  ~&lt;br /&gt;
 put values in sp1&lt;br /&gt;
 value of &amp;amp;sp1 = 0xde01d0(14549456)  a  b  c  d  e  f  g  h  i  j&lt;br /&gt;
 value of &amp;amp;sp2 = 0xde01e0(14549472)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 value of &amp;amp;sp3 = 0xde01d0(14549456)  a  b  c  d  e  f  g  h  i  j&lt;br /&gt;
&lt;br /&gt;
10. position of funcitons (using Q6)&lt;br /&gt;
 local_str     = 0x401050(4198480)&lt;br /&gt;
 local_str2    = 0x401086(4198534)&lt;br /&gt;
 static_str    = 0x4010bc(4198588)&lt;br /&gt;
 malloc_str   = 0x4010e5(4198629)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
==Linux==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1.type pointers(bytes)&lt;br /&gt;
 size of int pointer     = 4&lt;br /&gt;
 size of string pointer = 4&lt;br /&gt;
 size of array pointer  = 4&lt;br /&gt;
 size of struct pointer = 4&lt;br /&gt;
&lt;br /&gt;
 values(bytes)&lt;br /&gt;
 size of int      = 4&lt;br /&gt;
 size of long   = 4&lt;br /&gt;
 size of short  = 2&lt;br /&gt;
 size of float  = 4&lt;br /&gt;
 size of double = 8&lt;br /&gt;
 size of string(10 chars)     = 10&lt;br /&gt;
 size of array (5 ints)          = 20&lt;br /&gt;
 size of struct(int + double) = 16&lt;br /&gt;
&lt;br /&gt;
2.address differences&lt;br /&gt;
 &amp;amp;x = 0xffe94968(-1488536)&lt;br /&gt;
 &amp;amp;y = 0xffe94964(-1488540)&lt;br /&gt;
 input value arr[4] = 10&lt;br /&gt;
 address diff(long)&amp;amp;x-(long)&amp;amp;y) = 4&lt;br /&gt;
 ints    diff(long)(&amp;amp;x-&amp;amp;y)         = 1&lt;br /&gt;
&lt;br /&gt;
3. addresses&lt;br /&gt;
 about x(20)(then arr[4] = 10)&lt;br /&gt;
 value of x      = 167772180 &lt;br /&gt;
 value of &amp;amp;x   = 0xffe94960(-1488544) &lt;br /&gt;
 value of p_x   = 0xffe94960(-1488544) &lt;br /&gt;
 value of *p_x  = 167772180 &lt;br /&gt;
 value of &amp;amp;p_x = 0xffe94954(-1488556)&lt;br /&gt;
&lt;br /&gt;
 about arr[4](abc)&lt;br /&gt;
 value of arr    = abc &amp;amp;arr    = 0xffe9495c(-1488548)&lt;br /&gt;
 value of arr[0] = a, &amp;amp;arr[0] = 0xffe9495c(-1488548)&lt;br /&gt;
 value of arr[1] = b, &amp;amp;arr[1] = 0xffe9495d(-1488547)&lt;br /&gt;
 value of arr[2] = c, &amp;amp;arr[2] = 0xffe9495e(-1488546)&lt;br /&gt;
 value of arr[3] = ^@, &amp;amp;arr[3] = 0xffe9495f(-1488545)&lt;br /&gt;
 value of arr[4] = &lt;br /&gt;
, &amp;amp;arr[4] = 0xffe94960(-1488544)&lt;br /&gt;
 value of p_arr    = 0xffe9495c(-1488548), &amp;amp;p_arr = 0xffe94950(-1488560), *p_arr  = a &lt;br /&gt;
 value of p_arr[0] = a, &amp;amp;p_arr[0] = 0xffe9495c(-1488548), p_arr + 0 = 0xffe9495c(-1488548) &lt;br /&gt;
 value of p_arr[1] = b, &amp;amp;p_arr[1] = 0xffe9495d(-1488547), p_arr + 1 = 0xffe9495d(-1488547)&lt;br /&gt;
 value of p_arr[2] = c, &amp;amp;p_arr[2] = 0xffe9495e(-1488546), p_arr + 2 = 0xffe9495e(-1488546)&lt;br /&gt;
 value of p_arr[3] = ^@, &amp;amp;p_arr[3] = 0xffe9495f(-1488545), p_arr + 3 = 0xffe9495f(-1488545)&lt;br /&gt;
 value of p_arr[4] = &lt;br /&gt;
, &amp;amp;p_arr[4] = 0xffe94960(-1488544), p_arr + 4 = 0xffe94960(`)&lt;br /&gt;
&lt;br /&gt;
 about y(30)&lt;br /&gt;
 value of y      = 30 &lt;br /&gt;
 value of &amp;amp;y    = 0xffe94958(-1488552) &lt;br /&gt;
 value of p_y   = 0xffe94958(-1488552) &lt;br /&gt;
 value of *p_y  = 30 &lt;br /&gt;
 value of &amp;amp;p_y = 0xffe9494c(-1488564) &lt;br /&gt;
&lt;br /&gt;
4. address of arr_4 as global variables&lt;br /&gt;
 value of &amp;amp;x      = 0x10012ac4(268511940)&lt;br /&gt;
 value of &amp;amp;y      = 0x10012ac0(268511936)&lt;br /&gt;
 value of arr      = 0x10012ac8(268511944)&lt;br /&gt;
 value of &amp;amp;arr    = 0x10012ac8(268511944)&lt;br /&gt;
 value of arr + 4 = 0x10012acc(268511948)&lt;br /&gt;
 value of &amp;amp;arr[4] = 0x10012acc(268511948)&lt;br /&gt;
 value of x(20)   = 20&lt;br /&gt;
 value of y(30)   = 30&lt;br /&gt;
&lt;br /&gt;
5. value of pointer p1 and p2&lt;br /&gt;
 value of &amp;amp;p1   = 0xffe94948(-1488568)&lt;br /&gt;
 value of &amp;amp;p2   = 0xffe94944(-1488572)&lt;br /&gt;
 {value of &amp;amp;q = 0xffe94938(-1488584) p1 -&amp;gt; q=10}&lt;br /&gt;
 {value of &amp;amp;r = 0xffe94938(-1488584) p2 -&amp;gt; r=20}&lt;br /&gt;
 value of p1    = 0xffe94938(-1488584)&lt;br /&gt;
 value of p2    = 0xffe94938(-1488584)&lt;br /&gt;
 value of *p1   = 20&lt;br /&gt;
 value of *p2   = 20&lt;br /&gt;
 value of &amp;amp;next  = 0xffe94940(-1488576)&lt;br /&gt;
 value of &amp;amp;next2 = 0xffe9493c(-1488580)&lt;br /&gt;
&lt;br /&gt;
6. strings&lt;br /&gt;
  s(local)  = 0xffe947c4(0123456)&lt;br /&gt;
 sp         = 0xffe947c4(0123456)&lt;br /&gt;
 sp  X&amp;#039;d   = 0xffe947c4(XXXXXXX)&lt;br /&gt;
&lt;br /&gt;
  s(local)  = 0xffe947c4(0123456)&lt;br /&gt;
  s(local2) = 0xffe947c4(abcdefg)&lt;br /&gt;
 sp         = 0xffe947c4(abcdefg)&lt;br /&gt;
 sp  X&amp;#039;d   = 0xffe947c4(XXXXXXX)&lt;br /&gt;
&lt;br /&gt;
  s(static) = 0x10012ab8(tuvwxyz)&lt;br /&gt;
  s(local2) = 0xffe947c4(abcdefg)&lt;br /&gt;
 sp         = 0x10012ab8(tuvwxyz)&lt;br /&gt;
 sp  X&amp;#039;d   = 0x10012ab8(XXXXXXX)&lt;br /&gt;
&lt;br /&gt;
  s(malloc) = 0x10013008(hijklmn)&lt;br /&gt;
  s(local2) = 0xffe947c4(abcdefg)&lt;br /&gt;
 sp         = 0x10013008(hijklmn)&lt;br /&gt;
 sp  X&amp;#039;d   = 0x10013008(XXXXXXX)&lt;br /&gt;
&lt;br /&gt;
7. struct&lt;br /&gt;
 &amp;amp;my_struct_7  = 0xffe948e8(-1488664)&lt;br /&gt;
 offset:&lt;br /&gt;
 my_char    addr: 0xffe948e8(-1488664) diff: 0&lt;br /&gt;
 my_short   addr: 0xffe948ea(-1488662) diff: -2&lt;br /&gt;
 my_int      addr: 0xffe948ec(-1488660) diff: -4&lt;br /&gt;
 my_long    addr: 0xffe948f0(-1488656) diff: -8&lt;br /&gt;
 my_float    addr: 0xffe948f4(-1488652) diff: -12&lt;br /&gt;
 my_double addr: 0xffe948f8(-1488648) diff: -16&lt;br /&gt;
&lt;br /&gt;
8. union&lt;br /&gt;
  my_union_8.my_char_8     = &amp;#039;a&amp;#039;;&lt;br /&gt;
  my_union_8.my_short_8    =   1;&lt;br /&gt;
  my_union_8.my_int_8         =   2;&lt;br /&gt;
  my_union_8.my_long_8      =   3;&lt;br /&gt;
  my_union_8.my_float_8      = 4.1;&lt;br /&gt;
  my_union_8.my_double_8  = 5.2;&lt;br /&gt;
&lt;br /&gt;
 &amp;amp;my_union_8   = 0xffe94928(-1488600)&lt;br /&gt;
 offset:&lt;br /&gt;
 my_char   addr: 0xffe94928(-1488600)  diff: 0 value: @ &lt;br /&gt;
 my_short  addr: 0xffe94928(-1488600)  diff: 0 value: 16404 &lt;br /&gt;
 my_int    addr: 0xffe94928(-1488600)   diff: 0 value: 1075104972 &lt;br /&gt;
 my_long   addr: 0xffe94928(-1488600)  diff: 0 value: 1075104972&lt;br /&gt;
 my_float  addr: 0xffe94928(-1488600)   diff: 0 value: 2.325000 &lt;br /&gt;
 my_double addr: 0xffe94928(-1488600) diff: 0 value: 5.200000&lt;br /&gt;
&lt;br /&gt;
9. malloc and free&lt;br /&gt;
 value of &amp;amp;sp1 = 0x10013018(268513304)  a  b  c  d  e  f  g  h  i  j&lt;br /&gt;
 value of &amp;amp;sp2 = 0x10013028(268513320)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 free(sp1)&lt;br /&gt;
 value of &amp;amp;sp1 = 0x10013018(268513304)  ^@ ^@ ^@ ^@ e  f  g  h  i  j&lt;br /&gt;
 value of &amp;amp;sp2 = 0x10013028(268513320)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 define sp3 and put values in sp3&lt;br /&gt;
 value of &amp;amp;sp1 = 0x10013018(268513304)  u  v  w  x  y  z  {  |  }  ~&lt;br /&gt;
 value of &amp;amp;sp2 = 0x10013028(268513320)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 value of &amp;amp;sp3 = 0x10013018(268513304)  u  v  w  x  y  z  {  |  }  ~&lt;br /&gt;
 put values in sp1&lt;br /&gt;
 value of &amp;amp;sp1 = 0x10013018(268513304)  a  b  c  d  e  f  g  h  i  j&lt;br /&gt;
 value of &amp;amp;sp2 = 0x10013028(268513320)  k  l  m  n  o  p  q  r  s  t&lt;br /&gt;
 value of &amp;amp;sp3 = 0x10013018(268513304)  a  b  c  d  e  f  g  h  i  j&lt;br /&gt;
&lt;br /&gt;
10. position of funcitons (using Q6)&lt;br /&gt;
 local_str     = 0x1000052c(268436780)&lt;br /&gt;
 local_str2    = 0x100005bc(268436924)&lt;br /&gt;
 static_str    = 0x1000064c(268437068)&lt;br /&gt;
 malloc_str   = 0x100006a4(268437156)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
=Discussion=&lt;br /&gt;
==task1==&lt;br /&gt;
*All pointer has a same size.&lt;br /&gt;
*Size of each type (int=4, long=4, short=2, float=4, double=8)(bytes)&lt;br /&gt;
*Structure has more space than the space of values in the structure. structure(16 bytes), values in the sturcture(int(4 bytes) + double(8 bytes) = 12 bytes)&lt;br /&gt;
&lt;br /&gt;
==task2==&lt;br /&gt;
*&amp;amp;x-&amp;amp;y shows the distance between &amp;amp;x and &amp;amp;y by the size of type(int-4 bytes)&lt;br /&gt;
*Address can be a minus value&lt;br /&gt;
*Hexadecimal in Linux = 0x, visual studio = 00&lt;br /&gt;
&lt;br /&gt;
==task3==&lt;br /&gt;
*array&lt;br /&gt;
 arr    : %s     all chars in the array&lt;br /&gt;
 &amp;amp;arr   : %p(%d) the starting address of the array&lt;br /&gt;
 &amp;amp;arr[4]: %p(%d) 5th char&amp;#039;s address(=arr+4)&lt;br /&gt;
 arr+4  : %p(%d) &amp;amp;arr + 4(4 chars)&lt;br /&gt;
&lt;br /&gt;
*pointer array&lt;br /&gt;
 p_arr    : %p(%d) same as &amp;amp;arr&lt;br /&gt;
 &amp;amp;p_arr   : %p(%d) the address of the pointer&lt;br /&gt;
 p_arr+4  : %p(%d) same as arr+4&lt;br /&gt;
 *p_arr   : %c     the first char of the array&lt;br /&gt;
 *p_arr   : %s     not working&lt;br /&gt;
 *p_arr[1]: %s     not working&lt;br /&gt;
 *p_arr+1 : %s     not working&lt;br /&gt;
 It seems array pointer can not use with %s&lt;br /&gt;
&lt;br /&gt;
*Visual studio show error when arr[0] is used but not with &amp;#039;gcc&amp;#039;&lt;br /&gt;
 actually arr[0] is not make any sense&lt;br /&gt;
*x, arr[4], y saved in stack from the bottom and next to each other&lt;br /&gt;
 in memory&lt;br /&gt;
 y      (4 bytes)&lt;br /&gt;
 arr[0] (1 byte)&lt;br /&gt;
 arr[1]&lt;br /&gt;
 arr[2]&lt;br /&gt;
 arr[3]&lt;br /&gt;
 x      (same starting address as arr[4])&lt;br /&gt;
&lt;br /&gt;
Therefore arr[4]=10 also change x to 10&lt;br /&gt;
!! But it changed depending on the size of the array (more report at the bottom)&lt;br /&gt;
&lt;br /&gt;
==task4==&lt;br /&gt;
*Vista&lt;br /&gt;
 global values are saved in statics area at every 16 bytes from the top (addresses always finish with 0 e.g. 0x[[User:Dcho040|Dcho040]] 17:39, 15 March 2008 (NZDT)0) so x or y would not be changed unless input the value over 16th position of array &amp;#039;arr&amp;#039;.&lt;br /&gt;
*Linux&lt;br /&gt;
 X and y keep the value after input arr[4] to 10 but it changed depending on the size of the array (more report at the bottom).&lt;br /&gt;
&lt;br /&gt;
==task5==&lt;br /&gt;
*Vista&lt;br /&gt;
 values are saved in stack area from the bottom and next to each others even new values are in &amp;#039;{ }&amp;#039;&lt;br /&gt;
 values defined in &amp;#039;{ }&amp;#039; are deleted after &amp;#039;{ }&amp;#039; but actual data are still remained in the memory.&lt;br /&gt;
 Therefore, p1 still indicates 10, and p2 still indicates 20.&lt;br /&gt;
*Linux&lt;br /&gt;
 values defined in { } saved different place from values defined in main{ }&lt;br /&gt;
 After { } for q is finished, r in { } saved in same place.&lt;br /&gt;
 Therefore, both p1 and p2 indicate 20.&lt;br /&gt;
&lt;br /&gt;
==task6==&lt;br /&gt;
*Vista&lt;br /&gt;
 Values in a local array defined in a function is deleted when the function is finished.&lt;br /&gt;
 Therefore, there is nothing in the address of the local array so strcpy function also doesn&amp;#039;t work.&lt;br /&gt;
 After function is finished, then if new function starts, a local array in the new function use same memory as the previous array.&lt;br /&gt;
 However, static and malloc arrays do no use same memory with local array and keep the values even the function is finished.&lt;br /&gt;
*Linux&lt;br /&gt;
 Linux works the same as Vista except that a local array in a function keeps the values after the function is finished.&lt;br /&gt;
&lt;br /&gt;
==task7==&lt;br /&gt;
*Vista&lt;br /&gt;
 As expected, structure save all the information.&lt;br /&gt;
 ps) &amp;#039;char&amp;#039; take 2 bytes.&lt;br /&gt;
*Linux&lt;br /&gt;
 Linux works the same as Vista.&lt;br /&gt;
&lt;br /&gt;
==task8==&lt;br /&gt;
*Vista&lt;br /&gt;
 All values in a union starts at same address&lt;br /&gt;
 Only last value inputed in the union keeps the value, but the values inputed before are not&lt;br /&gt;
*Linux&lt;br /&gt;
 Linux works the same way as Vista&lt;br /&gt;
&lt;br /&gt;
==task9==&lt;br /&gt;
*Vista&lt;br /&gt;
 Malloc() uses malloc area which is saved from the top&lt;br /&gt;
 Free(name of pointer using malloc area) deletes all values in that malloc area but the pointer still indicates that address&lt;br /&gt;
 After using free(name of point using malloc area), the malloc area deleted from &amp;#039;free&amp;#039; would be used next time.&lt;br /&gt;
*Linux&lt;br /&gt;
 Linux works the same way as Vista except that when free is used only first 4 bytes in malloc area are deleted.&lt;br /&gt;
&lt;br /&gt;
==task10==&lt;br /&gt;
*Vista&lt;br /&gt;
 Functions saved in the memory near global values saved.&lt;br /&gt;
*Linux&lt;br /&gt;
 Functions saved the first part of the memory.&lt;br /&gt;
&lt;br /&gt;
=Eddtion test=&lt;br /&gt;
*Sometimes &amp;#039;arr[4]=10&amp;#039; change the value x, but sometiems not. Here is the reason.&lt;br /&gt;
&lt;br /&gt;
==Memory allocation of values defined in main()==&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_allocation.jpg]]&lt;br /&gt;
&lt;br /&gt;
*Vista saves the values from the bottom of memory.&lt;br /&gt;
*Linux saves the values to both way in memory.&lt;br /&gt;
*The same size of the arry shows the same results in every time.&lt;br /&gt;
*The arry allocated with at least 4 bytes(4, 8, 12 bytes).&lt;br /&gt;
*Hard to guess the allocations but the allocations make diffrences when the array has a size (*4 bytes(4, 8, 12 .. bytes))&lt;br /&gt;
&lt;br /&gt;
==Memory allocation of global values==&lt;br /&gt;
&lt;br /&gt;
[[Image:memory_allocation_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
*The allocation is not concerned by the order of values defined&lt;br /&gt;
*Vista saves global values every 16 bytes (All global values end with 0(ox------0))&lt;br /&gt;
*In Linux, an array which has over 8 bytes and less than 8 bytes are saved in different position.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>