<?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%3Asbas046</id>
	<title>SE250:lab-2:sbas046 - 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%3Asbas046"/>
	<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:sbas046&amp;action=history"/>
	<updated>2026-06-04T19:20:08Z</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:sbas046&amp;diff=5123&amp;oldid=prev</id>
		<title>Mark: 5 revision(s)</title>
		<link rel="alternate" type="text/html" href="https://wiki.kram.nz/index.php?title=SE250:lab-2:sbas046&amp;diff=5123&amp;oldid=prev"/>
		<updated>2008-11-03T05:19:06Z</updated>

		<summary type="html">&lt;p&gt;5 revision(s)&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Task 1 ==&lt;br /&gt;
&lt;br /&gt;
This task demonstrated that all pointers are 4 bytes irrespective of what they are pointing to.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
double *ip;&lt;br /&gt;
printf(&amp;quot;The size of the pointer is = %d&amp;quot;, sizeof(ip));&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The size of the pointer is = 4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The size of the pointer is = 4&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Task 2 ==&lt;br /&gt;
&lt;br /&gt;
When using &amp;#039;&amp;#039;long&amp;#039;&amp;#039; predefined for each variable the answers are as expected. When using a single &amp;#039;&amp;#039;long&amp;#039;&amp;#039; predefinition for the substraction however you get the expected answers divided by 4. &lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
    int x;&lt;br /&gt;
    int y;&lt;br /&gt;
    printf(&amp;quot;The adress of x = %p\nThe adress of y = %p\nThe&amp;quot;&lt;br /&gt;
	   &amp;quot; difference of the adresses are = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x- (long)&amp;amp;y);&lt;br /&gt;
    printf(&amp;quot;The adress of x = %p\nThe adress of y = %p\nThe&amp;quot;&lt;br /&gt;
	   &amp;quot; difference of the adresses are = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)(&amp;amp;x- &amp;amp;y));&lt;br /&gt;
&lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The adress of x = 0x22ccc4&lt;br /&gt;
The adress of y = 0x22ccbc&lt;br /&gt;
The difference of the adresses are = 4&lt;br /&gt;
The difference of the adresses are = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The adress of x = 0xff81072c&lt;br /&gt;
 The adress of y = 0xff810728&lt;br /&gt;
The difference of the adresses are = 4&lt;br /&gt;
The difference of the adresses are = 1&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Task 3 ==&lt;br /&gt;
This task demonstrates that if you initialise a value to the &amp;#039;&amp;#039;&amp;#039;(n+x)th&amp;#039;&amp;#039;&amp;#039; position of an array, where the array is &amp;#039;&amp;#039;&amp;#039;n&amp;#039;&amp;#039;&amp;#039; long and x is any integer greater than one, the value initialised will be written outside the array and may overwrite other variables in memory.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main(void)&lt;br /&gt;
{&lt;br /&gt;
&lt;br /&gt;
    int x;&lt;br /&gt;
    char arr[4];&lt;br /&gt;
    int y;&lt;br /&gt;
&lt;br /&gt;
    x=0;&lt;br /&gt;
    y=0;&lt;br /&gt;
    arr[4] = 10;&lt;br /&gt;
    printf(&amp;quot;The adress of x = %p\nThe adress of y = %p\nThe&amp;quot;&lt;br /&gt;
	   &amp;quot; difference of the adresses are = %ld\n&amp;quot;, &amp;amp;x, &amp;amp;y, (long)&amp;amp;x- (long)&amp;amp;y);&lt;br /&gt;
    printf(&amp;quot;adress of arr = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;adress of arr[4] = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;value of arr+4 = %d\n&amp;quot;,&lt;br /&gt;
	   &amp;amp;arr, &amp;amp;arr[4], arr[4]);&lt;br /&gt;
    printf(&amp;quot;x =%d\ny= %d&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;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The adress of x = 0x22ccc4&lt;br /&gt;
The adress of y = 0x22ccbc&lt;br /&gt;
The difference of the adresses are = 8&lt;br /&gt;
adress of arr = 0x22ccc0&lt;br /&gt;
adress of arr[4] = 0x22ccc4&lt;br /&gt;
value of arr+4 = 10&lt;br /&gt;
x =10&lt;br /&gt;
y= 0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;The adress of x = 0x10010b64&lt;br /&gt;
The adress of y = 0x10010b68&lt;br /&gt;
The difference of the adresses are = -4&lt;br /&gt;
adress of arr = 0xffc4073c&lt;br /&gt;
adress of arr[4] = 0xffc40740&lt;br /&gt;
value of arr+4 = 10&lt;br /&gt;
x = 0&lt;br /&gt;
y = 0&amp;lt;/pre&amp;gt;&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Task 4 ==&lt;br /&gt;
This time the memory adresses are in a  different sectors altogether and hence have vastly different values.&lt;br /&gt;
Also making x and y global variables enables you to change the character array without it overwriting the x or y variables, this is because these variables are in different memory sectors.&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Task 5 ==&lt;br /&gt;
p1 is the adress of q&lt;br /&gt;
p2 is the adress of r&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Task 6 ==&lt;br /&gt;
This task demonstrates the different sectors of memory used under different situations.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
char *local_str(){&lt;br /&gt;
    char s[8] = &amp;quot;1234567&amp;quot;;&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char* local_str2(){&lt;br /&gt;
    char s[8] = &amp;quot;abcdefg&amp;quot;;&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *malloc_str(){&lt;br /&gt;
    char *s = malloc(8);&lt;br /&gt;
    strcpy(s, &amp;quot;hijklmn&amp;quot;);&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *static_str(){&lt;br /&gt;
    static char s[8] = &amp;quot;tuvwxyz&amp;quot;;&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{&lt;br /&gt;
    char *sp;&lt;br /&gt;
    &lt;br /&gt;
    sp = local_str();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    sp = local_str();&lt;br /&gt;
    local_str2();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    sp = static_str();&lt;br /&gt;
    local_str2();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    sp= malloc_str();&lt;br /&gt;
    local_str2();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sp = 0x22cc90(567)&lt;br /&gt;
sp = 0x22cc90(efg)&lt;br /&gt;
sp = 0x402000(tuvwxyz)&lt;br /&gt;
sp = 0x10601a0(hijklmn)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sp = 0xffb0f704( þîÐ►)&lt;br /&gt;
sp = 0xffb0f704(abcdefg)&lt;br /&gt;
sp = 0x10010cf8(tuvwxyz)&lt;br /&gt;
sp = 0x10011008(hijklmn)&lt;br /&gt;
local_str = 0x100004dc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Task 7 ==&lt;br /&gt;
This task demonstrates the adresses the variables are stored within a structure. It also shows that the structure itself has a NULL adress. This is because its not actually storing anything, its just C&amp;#039;s way of representing an structure and its not really a physical memory structure.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
struct &lt;br /&gt;
{ &lt;br /&gt;
    char my_char;&lt;br /&gt;
    short my_short;&lt;br /&gt;
    int my_int;&lt;br /&gt;
    long my_long;&lt;br /&gt;
    float my_float;&lt;br /&gt;
    double my_double;&lt;br /&gt;
    &lt;br /&gt;
}my_struct;&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{  &lt;br /&gt;
printf(&amp;quot;&amp;amp;my_struct = %p\n&amp;quot;, my_struct);&lt;br /&gt;
printf(&amp;quot;offsets:\n&amp;quot;&lt;br /&gt;
       &amp;quot;my_char: %ld\n&amp;quot;&lt;br /&gt;
       &amp;quot;my_short: %ld\n&amp;quot;&lt;br /&gt;
       &amp;quot;my_int: %ld\n&amp;quot;&lt;br /&gt;
       &amp;quot;my_long: %ld\n&amp;quot;&lt;br /&gt;
       &amp;quot;my_float: %ld\n&amp;quot;&lt;br /&gt;
       &amp;quot;my_double: %ld\n&amp;quot;,&lt;br /&gt;
       (long)&amp;amp;my_struct -(long)&amp;amp;my_struct.my_char,&lt;br /&gt;
       (long)&amp;amp;my_struct-(long)&amp;amp;my_struct.my_short,&lt;br /&gt;
       (long)&amp;amp;my_struct-(long)&amp;amp;my_struct.my_int,&lt;br /&gt;
       (long)&amp;amp;my_struct-(long)&amp;amp;my_struct.my_long,&lt;br /&gt;
       (long)&amp;amp;my_struct-(long)&amp;amp;my_struct.my_float,&lt;br /&gt;
       (long)&amp;amp;my_struct-(long)&amp;amp;my_struct.my_double);&lt;br /&gt;
&lt;br /&gt;
return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;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;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&amp;amp;my_struct = 0xff917710&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;
----&lt;br /&gt;
== Task 8 ==&lt;br /&gt;
An union stacks the variables on top of each other. All the variables within the structure share the same adress&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
== Task 9 ==&lt;br /&gt;
This task demonstrates that if you free a malloced pointer it still points at the adress it was pointing to before but the memory is now unalocated.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#include&amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{&lt;br /&gt;
    char *sp1, *sp2, *sp3;&lt;br /&gt;
&lt;br /&gt;
    sp1 = malloc( 10 );&lt;br /&gt;
    &lt;br /&gt;
    printf(&amp;quot;sp1 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp2 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp3 = %p\n\n&amp;quot;,&lt;br /&gt;
	   sp1, sp2, sp3);&lt;br /&gt;
    &lt;br /&gt;
	sp2 = malloc( 10 );&lt;br /&gt;
    &lt;br /&gt;
    printf(&amp;quot;sp1 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp2 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp3 = %p\n\n&amp;quot;,&lt;br /&gt;
	   sp1, sp2, sp3);&lt;br /&gt;
    &lt;br /&gt;
&lt;br /&gt;
	free( sp1 );&lt;br /&gt;
    &lt;br /&gt;
    printf(&amp;quot;sp1 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp2 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp3 = %p\n\n&amp;quot;,&lt;br /&gt;
	   sp1, sp2, sp3);&lt;br /&gt;
    &lt;br /&gt;
	sp3 = malloc(10);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;sp1 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp2 = %p\n&amp;quot;&lt;br /&gt;
	   &amp;quot;sp3 = %p\n\n&amp;quot;,&lt;br /&gt;
	   sp1, sp2, sp3);&lt;br /&gt;
    &lt;br /&gt;
	&lt;br /&gt;
	return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;gcc malloc.c -o malloc.exe &amp;amp;&amp;amp; ./malloc.exe&lt;br /&gt;
sp1 = 0x1060198&lt;br /&gt;
sp2 = 0x611021a0&lt;br /&gt;
sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp1 = 0x1060198&lt;br /&gt;
sp2 = 0x10701b0&lt;br /&gt;
sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp1 = 0x1060198&lt;br /&gt;
sp2 = 0x10701b0&lt;br /&gt;
sp3 = 0x0&lt;br /&gt;
&lt;br /&gt;
sp1 = 0x1060198&lt;br /&gt;
sp2 = 0x10701b0&lt;br /&gt;
sp3 = 0x1060198&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;malloc.c: In function &amp;#039;main&amp;#039;:&lt;br /&gt;
malloc.c:7: warning: incompatible implicit declaration of built-in function &amp;#039;mal&lt;br /&gt;
loc&amp;#039;&lt;br /&gt;
sp1 = 0x10011008&lt;br /&gt;
sp2 = 0xfffe39c4&lt;br /&gt;
sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp1 = 0x10011008&lt;br /&gt;
sp2 = 0x10011018&lt;br /&gt;
sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp1 = 0x10011008&lt;br /&gt;
sp2 = 0x10011018&lt;br /&gt;
sp3 = 0x1&lt;br /&gt;
&lt;br /&gt;
sp1 = 0x10011008&lt;br /&gt;
sp2 = 0x10011018&lt;br /&gt;
sp3 = 0x10011008&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
== Task 10 ==&lt;br /&gt;
The functions are stored near the global variables in the actual code sector.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Code&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&amp;lt;pre&amp;gt;#include &amp;lt;stdio.h&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
char *local_str(){&lt;br /&gt;
    char s[8] = &amp;quot;1234567&amp;quot;;&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char* local_str2(){&lt;br /&gt;
    char s[8] = &amp;quot;abcdefg&amp;quot;;&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *malloc_str(){&lt;br /&gt;
    char *s = malloc(8);&lt;br /&gt;
    strcpy(s, &amp;quot;hijklmn&amp;quot;);&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
char *static_str(){&lt;br /&gt;
    static char s[8] = &amp;quot;tuvwxyz&amp;quot;;&lt;br /&gt;
    return s;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
int main (void)&lt;br /&gt;
{&lt;br /&gt;
    char *sp;&lt;br /&gt;
    &lt;br /&gt;
    sp = local_str();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    sp = local_str();&lt;br /&gt;
    local_str2();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    sp = static_str();&lt;br /&gt;
    local_str2();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
    &lt;br /&gt;
    sp= malloc_str();&lt;br /&gt;
    local_str2();&lt;br /&gt;
    printf(&amp;quot;sp = %p(%s)\n&amp;quot;, sp, sp);&lt;br /&gt;
&lt;br /&gt;
    printf(&amp;quot;local_str = %p\n\n&amp;quot;, local_str);&lt;br /&gt;
    &lt;br /&gt;
    return 0;&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Windows Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sp = 0x22cc90(567)&lt;br /&gt;
sp = 0x22cc90(efg)&lt;br /&gt;
sp = 0x402000(tuvwxyz)&lt;br /&gt;
sp = 0x10201a0(hijklmn)&lt;br /&gt;
local_str = 0x401050&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Linux Output:&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;sp = 0xffb0f704( þîÐ►)&lt;br /&gt;
sp = 0xffb0f704(abcdefg)&lt;br /&gt;
sp = 0x10010cf8(tuvwxyz)&lt;br /&gt;
sp = 0x10011008(hijklmn)&lt;br /&gt;
local_str = 0x100004dc&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
----&lt;/div&gt;</summary>
		<author><name>Mark</name></author>
	</entry>
</feed>