<?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%3Arwan064</id>
	<title>SE250:lab-2:rwan064 - 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%3Arwan064"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:rwan064&amp;action=history"/>
	<updated>2026-04-29T02:21:37Z</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:rwan064&amp;diff=5117&amp;oldid=prev</id>
		<title>Mark: 51 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:rwan064&amp;diff=5117&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:06Z</updated>

		<summary type="html">&lt;p&gt;51 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;
I am sick with the flu so doing the lab exercise on my laptop at home instead of the GCL lab computers. I also managed to log into the Linux server using PuTTY so got some results for Linux too.&lt;br /&gt;
&lt;br /&gt;
==Results==&lt;br /&gt;
Results from different compilers and environments&lt;br /&gt;
&lt;br /&gt;
===Windows Vista: cygwin===&lt;br /&gt;
These are the results from Vista Business on my laptop.&lt;br /&gt;
Specs on my laptop:&lt;br /&gt;
*Intel Core 1.66 GHz&lt;br /&gt;
*1 GB RAM&lt;br /&gt;
That should be enough.&lt;br /&gt;
&lt;br /&gt;
====Task 1====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int *ip;&lt;br /&gt;
char *cp;&lt;br /&gt;
float *fp;&lt;br /&gt;
double *dp;&lt;br /&gt;
short *sp;&lt;br /&gt;
long *lp;&lt;br /&gt;
&lt;br /&gt;
printf( &amp;quot;sizeof( int* ) = %d\n&amp;quot;, sizeof( ip ) );&lt;br /&gt;
printf( &amp;quot;sizeof( char* ) = %d\n&amp;quot;, sizeof( cp ) );&lt;br /&gt;
printf( &amp;quot;sizeof( float* ) = %d\n&amp;quot;, sizeof( fp ) );&lt;br /&gt;
printf( &amp;quot;sizeof( double* ) = %d\n&amp;quot;, sizeof( dp ) );&lt;br /&gt;
printf( &amp;quot;sizeof( short* ) = %d\n&amp;quot;, sizeof( sp ) );&lt;br /&gt;
printf( &amp;quot;sizeof( long* ) = %d\n&amp;quot;, sizeof( lp ) );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
sizeof( int* ) = 4&lt;br /&gt;
sizeof( char* ) = 4&lt;br /&gt;
sizeof( float* ) = 4&lt;br /&gt;
sizeof( double* ) = 4&lt;br /&gt;
sizeof( short* ) = 4&lt;br /&gt;
sizeof( long* ) = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*Are all pointers the same size? &amp;#039;&amp;#039;&amp;#039;YES&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
*What other data types in C are the same size? &amp;#039;&amp;#039;&amp;#039;int&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
====Task 2====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int x, y;&lt;br /&gt;
printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)(&amp;amp;x - &amp;amp;y) );&lt;br /&gt;
printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x - (long)&amp;amp;y );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cca0, diff = 1&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cca0, diff = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*What is the difference between (long)&amp;amp;x - (long)&amp;amp;y and (long)(&amp;amp;x - &amp;amp;y)?&lt;br /&gt;
&lt;br /&gt;
====Task 3====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int x;&lt;br /&gt;
char arr[4];&lt;br /&gt;
int y;&lt;br /&gt;
printf( &amp;quot;sizeof( arr ) = %d\n&amp;quot;, sizeof( arr ) );&lt;br /&gt;
printf( &amp;quot;&amp;amp;arr = %p\n&amp;quot;, &amp;amp;arr );&lt;br /&gt;
printf( &amp;quot;arr+4 = %p\n&amp;quot;, arr+4 );&lt;br /&gt;
printf( &amp;quot;&amp;amp;arr[4] = %p\n&amp;quot;, &amp;amp;arr[4] )&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sizeof( arr ) = 4&lt;br /&gt;
&amp;amp;arr = 0x22cca0&lt;br /&gt;
arr+4 = 0x22cca4&lt;br /&gt;
&amp;amp;arr[4] = 0x22cca4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What does sizeof report as the size of the array? &amp;#039;&amp;#039;&amp;#039;The number of elements in the array&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Differences between &amp;#039;&amp;#039;&amp;#039;&amp;amp;x&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;amp;y&amp;#039;&amp;#039;&amp;#039; for varing size of &amp;#039;&amp;#039;&amp;#039;arr&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int x;&lt;br /&gt;
char arr[0];&lt;br /&gt;
int y;&lt;br /&gt;
printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)(&amp;amp;x - &amp;amp;y) );&lt;br /&gt;
printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x - (long)&amp;amp;y );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
For sizeof( arr ) = 0 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 1 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 2&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 8&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 2 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 2&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 8&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 3 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 4 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 2&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 8&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 5 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 6 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 7 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 8 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc94, diff = 4&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc94, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 9 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 10 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 8&lt;br /&gt;
&amp;amp;x = 0x22cc9c, &amp;amp;y = 0x22cc7c, diff = 32&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Putting values into the variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int x = 0;&lt;br /&gt;
char arr[4];&lt;br /&gt;
int y = 0;&lt;br /&gt;
&lt;br /&gt;
arr[4] = 10;&lt;br /&gt;
&lt;br /&gt;
printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)(&amp;amp;x - &amp;amp;y) );&lt;br /&gt;
printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x - (long)&amp;amp;y );&lt;br /&gt;
printf( &amp;quot;x = %d, y = %d\n&amp;quot;, x, y );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 2&lt;br /&gt;
&amp;amp;x = 0x22cca4, &amp;amp;y = 0x22cc9c, diff = 8&lt;br /&gt;
x = 10, y = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 4====&lt;br /&gt;
&lt;br /&gt;
Differences between &amp;#039;&amp;#039;&amp;#039;&amp;amp;x&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;&amp;amp;y&amp;#039;&amp;#039;&amp;#039; for varying sizes of &amp;#039;&amp;#039;&amp;#039;arr&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int x;&lt;br /&gt;
int y;&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
    char arr[0];&lt;br /&gt;
    printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)(&amp;amp;x - &amp;amp;y) );&lt;br /&gt;
    printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x - (long)&amp;amp;y );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
For sizeof( arr ) = 0 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 1 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 2 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 3 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 4 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 5 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 6 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 7 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 8 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 9 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&lt;br /&gt;
For sizeof( arr ) = 10 ----------------------------&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Putting values into variables:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int x;&lt;br /&gt;
int y;&lt;br /&gt;
&lt;br /&gt;
int main( void )&lt;br /&gt;
{&lt;br /&gt;
    char arr[4];&lt;br /&gt;
    arr[4] = 10;&lt;br /&gt;
    x = 0;&lt;br /&gt;
    y = 0;&lt;br /&gt;
    printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)(&amp;amp;x - &amp;amp;y) );&lt;br /&gt;
    printf( &amp;quot;&amp;amp;x = %p, &amp;amp;y = %p, diff = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x - (long)&amp;amp;y );&lt;br /&gt;
    printf( &amp;quot;x = %d, y = %d\n&amp;quot;, x, y );&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 4&lt;br /&gt;
&amp;amp;x = 0x403030, &amp;amp;y = 0x403020, diff = 16&lt;br /&gt;
x = 0, y = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 5====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
int *p1, *p2;&lt;br /&gt;
printf( &amp;quot;Un-initializd pointers:\n&amp;quot; );&lt;br /&gt;
printf( &amp;quot;p1 = %p, p2 = %p\n&amp;quot;, p1, p2 );&lt;br /&gt;
printf( &amp;quot;\n&amp;quot; );&lt;br /&gt;
{&lt;br /&gt;
    int q;&lt;br /&gt;
    p1 = &amp;amp;q;&lt;br /&gt;
    printf( &amp;quot;Inside first scope:\n&amp;quot; );&lt;br /&gt;
    printf( &amp;quot;&amp;amp;q = %p\n&amp;quot;, &amp;amp;q );&lt;br /&gt;
    printf( &amp;quot;p1 = %p, p2 = %p\n&amp;quot;, p1, p2 );&lt;br /&gt;
    printf( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
{&lt;br /&gt;
    int r;&lt;br /&gt;
    p2 = &amp;amp;r;&lt;br /&gt;
    printf( &amp;quot;Inside second scope:\n&amp;quot; );&lt;br /&gt;
    printf( &amp;quot;&amp;amp;r = %p\n&amp;quot;, &amp;amp;r );&lt;br /&gt;
    printf( &amp;quot;p1 = %p, p2 = %p\n&amp;quot;, p1, p2 );&lt;br /&gt;
    printf( &amp;quot;\n&amp;quot; );&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
printf( &amp;quot;p1 = %p, p2 = %p\n&amp;quot;, p1, p2 );&lt;br /&gt;
printf( &amp;quot;*p1 = %d, *p2 = %d\n&amp;quot;, *p1, *p2 );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
Un-initializd pointers:&lt;br /&gt;
p1 = 0x401450, p2 = 0x611021a0&lt;br /&gt;
&lt;br /&gt;
Inside first scope:&lt;br /&gt;
&amp;amp;q = 0x22ccbc&lt;br /&gt;
p1 = 0x22ccbc, p2 = 0x611021a0&lt;br /&gt;
&lt;br /&gt;
Inside second scope:&lt;br /&gt;
&amp;amp;r = 0x22ccb8&lt;br /&gt;
p1 = 0x22ccbc, p2 = 0x22ccb8&lt;br /&gt;
&lt;br /&gt;
p1 = 0x22ccbc, p2 = 0x22ccb8&lt;br /&gt;
*p1 = 0, *p2 = 1628704768&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 6====&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
sp = 0x22cc90(456)&lt;br /&gt;
sp = 0x22cc90(efg)&lt;br /&gt;
sp = 0x402000(tuvwxyz)&lt;br /&gt;
sp = 0xda0170(hijklmn)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results with extra printf &amp;#039;&amp;#039;&amp;#039;strcpy&amp;#039;&amp;#039;&amp;#039; and &amp;#039;&amp;#039;&amp;#039;printf&amp;#039;&amp;#039;&amp;#039;:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
sp = 0x22cc90(456)&lt;br /&gt;
sp X&amp;#039;d = 0x22cc90(-0@)&lt;br /&gt;
sp = 0x22cc90(efg)&lt;br /&gt;
sp X&amp;#039;d = 0x22cc90(-0@)&lt;br /&gt;
sp = 0x402000(tuvwxyz)&lt;br /&gt;
sp X&amp;#039;d = 0x402000(XXXXXXX)&lt;br /&gt;
sp = 0xda0170(hijklmn)&lt;br /&gt;
sp X&amp;#039;d = 0xda0170(XXXXXXX)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 7====&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
&amp;amp;my_struct = 0x0&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: -2&lt;br /&gt;
my_int: -4&lt;br /&gt;
my_long: -8&lt;br /&gt;
my_float: -12&lt;br /&gt;
my_double: -16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 8====&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
&amp;amp;my_struct = 0x0&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: 0&lt;br /&gt;
my_int: 0&lt;br /&gt;
my_long: 0&lt;br /&gt;
my_float: 0&lt;br /&gt;
my_double: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 9====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
char *sp1, *sp2, *sp3;&lt;br /&gt;
printf( &amp;quot;Declared\nsp1 = %p, sp2 = %p, sp3 = %p\n\n&amp;quot;, sp1, sp2, sp3 );&lt;br /&gt;
sp1 = malloc( 10 );&lt;br /&gt;
printf( &amp;quot;sp1 mallocd\nsp1 = %p, sp2 = %p, sp3 = %p\n\n&amp;quot;, sp1, sp2, sp3 );&lt;br /&gt;
sp2 = malloc( 10 );&lt;br /&gt;
printf( &amp;quot;sp2 mallocd\nsp1 = %p, sp2 = %p, sp3 = %p\n\n&amp;quot;, sp1, sp2, sp3 );&lt;br /&gt;
free( sp1 );&lt;br /&gt;
printf( &amp;quot;sp1 freed\nsp1 = %p, sp2 = %p, sp3 = %p\n\n&amp;quot;, sp1, sp2, sp3 );&lt;br /&gt;
sp3 = malloc( 10 );&lt;br /&gt;
printf( &amp;quot;sp3 mallocd\nsp1 = %p, sp2 = %p, sp3 = %p\n\n&amp;quot;, sp1, sp2, sp3 );&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
Declared&lt;br /&gt;
sp1 = 0x401420, sp2 = 0x611021a0, sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp1 mallocd&lt;br /&gt;
sp1 = 0x1030170, sp2 = 0x611021a0, sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp2 mallocd&lt;br /&gt;
sp1 = 0x1030170, sp2 = 0x1030180, sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp1 freed&lt;br /&gt;
sp1 = 0x1030170, sp2 = 0x1030180, sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp3 mallocd&lt;br /&gt;
sp1 = 0x1030170, sp2 = 0x1030180, sp3 = 0x1030170&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
*What can you say about the pointers returned by malloc?&lt;br /&gt;
*What will happen if sp1 is used after it has been freed?&lt;br /&gt;
&lt;br /&gt;
====Task 10====&lt;br /&gt;
Results:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
$ ./main.exe&lt;br /&gt;
local_str = 0x401050&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Linux server===&lt;br /&gt;
&lt;br /&gt;
====Task 1====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sizeof( int* ) = 4&lt;br /&gt;
sizeof( char* ) = 4&lt;br /&gt;
sizeof( float* ) = 4&lt;br /&gt;
sizeof( double* ) = 4&lt;br /&gt;
sizeof( short* ) = 4&lt;br /&gt;
sizeof( long* ) = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 2====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0xffd4278c, &amp;amp;y = 0xffd42788, diff = 1&lt;br /&gt;
&amp;amp;x = 0xffd4278c, &amp;amp;y = 0xffd42788, diff = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 3====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sizeof( arr ) = 4&lt;br /&gt;
&amp;amp;arr = 0xffd23784&lt;br /&gt;
arr+4 = 0xffd23788&lt;br /&gt;
&amp;amp;arr[4] = 0xffd23788&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0xffdf878c, &amp;amp;y = 0xffdf8788, diff = 1&lt;br /&gt;
&amp;amp;x = 0xffdf878c, &amp;amp;y = 0xffdf8788, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xffaa9788, &amp;amp;y = 0xffaa9784, diff = 1&lt;br /&gt;
&amp;amp;x = 0xffaa9788, &amp;amp;y = 0xffaa9784, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xfff0b788, &amp;amp;y = 0xfff0b784, diff = 1&lt;br /&gt;
&amp;amp;x = 0xfff0b788, &amp;amp;y = 0xfff0b784, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xfface788, &amp;amp;y = 0xfface784, diff = 1&lt;br /&gt;
&amp;amp;x = 0xfface788, &amp;amp;y = 0xfface784, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xffebc78c, &amp;amp;y = 0xffebc784, diff = 2&lt;br /&gt;
&amp;amp;x = 0xffebc78c, &amp;amp;y = 0xffebc784, diff = 8&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xffcb078c, &amp;amp;y = 0xffcb0788, diff = 1&lt;br /&gt;
&amp;amp;x = 0xffcb078c, &amp;amp;y = 0xffcb0788, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xff81878c, &amp;amp;y = 0xff818788, diff = 1&lt;br /&gt;
&amp;amp;x = 0xff81878c, &amp;amp;y = 0xff818788, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xffc8178c, &amp;amp;y = 0xffc81788, diff = 1&lt;br /&gt;
&amp;amp;x = 0xffc8178c, &amp;amp;y = 0xffc81788, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xffd9f780, &amp;amp;y = 0xffd9f77c, diff = 1&lt;br /&gt;
&amp;amp;x = 0xffd9f780, &amp;amp;y = 0xffd9f77c, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xfff2077c, &amp;amp;y = 0xfff20778, diff = 1&lt;br /&gt;
&amp;amp;x = 0xfff2077c, &amp;amp;y = 0xfff20778, diff = 4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0xfff3077c, &amp;amp;y = 0xfff30778, diff = 1&lt;br /&gt;
&amp;amp;x = 0xfff3077c, &amp;amp;y = 0xfff30778, diff = 4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0xffd4178c, &amp;amp;y = 0xffd41784, diff = 2&lt;br /&gt;
&amp;amp;x = 0xffd4178c, &amp;amp;y = 0xffd41784, diff = 8&lt;br /&gt;
x = 167772160, y = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 4====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010aa4, &amp;amp;y = 0x10010aa8, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010b18, &amp;amp;y = 0x10010b1c, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010b18, &amp;amp;y = 0x10010b1c, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010b18, &amp;amp;y = 0x10010b1c, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010b18, &amp;amp;y = 0x10010b1c, diff = -4&lt;br /&gt;
&lt;br /&gt;
&amp;amp;x = 0x10010b18, &amp;amp;y = 0x10010b1c, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010b18, &amp;amp;y = 0x10010b1c, diff = -4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;x = 0x10010af4, &amp;amp;y = 0x10010af8, diff = -1&lt;br /&gt;
&amp;amp;x = 0x10010af4, &amp;amp;y = 0x10010af8, diff = -4&lt;br /&gt;
x = 0, y = 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====Task 5====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Un-initializd pointers:&lt;br /&gt;
p1 = 0xff929a24, p2 = 0x1&lt;br /&gt;
&lt;br /&gt;
Inside first scope:&lt;br /&gt;
&amp;amp;q = 0xff929784&lt;br /&gt;
p1 = 0xff929784, p2 = 0x1&lt;br /&gt;
&lt;br /&gt;
Inside second scope:&lt;br /&gt;
&amp;amp;r = 0xff929784&lt;br /&gt;
p1 = 0xff929784, p2 = 0xff929784&lt;br /&gt;
&lt;br /&gt;
p1 = 0xff929784, p2 = 0xff929784&lt;br /&gt;
*p1 = -7169520, *p2 = -7169520&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 6====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = 0xffb01754(�þîÐ�)&lt;br /&gt;
sp = 0xffb01754(abcdefg)&lt;br /&gt;
sp = 0x10010cd4(tuvwxyz)&lt;br /&gt;
sp = 0x10011008(hijklmn)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
sp = 0xffcf4754(�þîÐ�)&lt;br /&gt;
sp X’d = 0xffcf4754(XXXXXXX)&lt;br /&gt;
sp = 0xffcf4754(abcdefg)&lt;br /&gt;
sp X’d = 0xffcf4754(XXXXXXX)&lt;br /&gt;
sp = 0x10010dc0(tuvwxyz)&lt;br /&gt;
sp X’d = 0x10010dc0(XXXXXXX)&lt;br /&gt;
sp = 0x10011008(hijklmn)&lt;br /&gt;
sp X’d = 0x10011008(XXXXXXX)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 7====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;my_struct = 0xffab5770&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: -2&lt;br /&gt;
my_int: -4&lt;br /&gt;
my_long: -8&lt;br /&gt;
my_float: -12&lt;br /&gt;
my_double: -16&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 8====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;amp;my_struct = 0xffec6788&lt;br /&gt;
offsets:&lt;br /&gt;
my_char: 0&lt;br /&gt;
my_short: 0&lt;br /&gt;
my_int: 0&lt;br /&gt;
my_long: 0&lt;br /&gt;
my_float: 0&lt;br /&gt;
my_double: 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 9====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Declared&lt;br /&gt;
sp1 = 0xffa49a10, sp2 = 0xffa49a24, sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp1 mallocd&lt;br /&gt;
sp1 = 0x10011008, sp2 = 0xffa49a24, sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp2 mallocd&lt;br /&gt;
sp1 = 0x10011008, sp2 = 0x10011018, sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp1 freed&lt;br /&gt;
sp1 = 0x10011008, sp2 = 0x10011018, sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp3 mallocd&lt;br /&gt;
sp1 = 0x10011008, sp2 = 0x10011018, sp3 = 0x10011008&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
====Task 10====&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local_str = 0x100004ac&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Memory Map==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
local variables&lt;br /&gt;
0x22CCA4&lt;br /&gt;
0x22CCA0&lt;br /&gt;
&lt;br /&gt;
static variables&lt;br /&gt;
0x403030&lt;br /&gt;
0x403020&lt;br /&gt;
&lt;br /&gt;
malloc&amp;#039;d variables&lt;br /&gt;
0x402000&lt;br /&gt;
0xDA0170&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Image of memory locations:&lt;br /&gt;
&amp;lt;html&amp;gt;&lt;br /&gt;
&amp;lt;embed src=&amp;quot;http://www.rajithaonline.com/SE250/map.png&amp;quot; width=&amp;quot;270&amp;quot; height=&amp;quot;494&amp;quot; /&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Conclusions &amp;amp; Discussion==&lt;br /&gt;
I had to read through the lab instructions a couple of times till I understood properly exactly what I need to do. It was quite a lot of work re-typing, compiling and running multiple times. I started off with using Cygwin to run the programs on my Windows machine. This wasn&amp;#039;t too hard for many of the exercises since all I need to do was copy and paste the code and run it. But it was quite annoying doing Task 3 and 4 because I had to edit, compile and run MANY times!&lt;br /&gt;
&lt;br /&gt;
For the Linux machine I logged into the server (login.cs.auckland.ac.nz) using PuTTY. The problem I had now was to find a way to easily get the results from the server. I don&amp;#039;t want to have to edit, compile and run about 20 times because I will also have to upload the edited file that many times since I was at home. So I made multiple files which has everything I need to run. Then I wrote a shell script to automatically compile and run all of the files and output the results into a file instead of the screen.&lt;br /&gt;
&lt;br /&gt;
But overall the lab wasn&amp;#039;t too challenging but it was a lot of work.&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>