04-24-2005
bss(uninitialized data) segment allocation
Hi
1) Please go through the following code :
char string2[12];
char string1[6];
main()
{
memcpy(string2,"SENDER ",12);
strcpy(string1,"******");
printf("%s\n%s\n",string1,string2);
}
2) and the output of size command for the executable is :
1904 + 415 + 18 = 2337
3) and the output is as expected ( gdb output ):
Breakpoint 1, main () at test.c:5
5 memcpy(string2,"SENDER ",12);
2: string2 = '\000' <repeats 11 times>
1: string1 = "\000\000\000\000\000"
(gdb) s
6 strcpy(string1,"******");
2: string2 = "SENDER "
1: string1 = "\000\000\000\000\000"
(gdb) s
7 printf("%s\n%s\n",string1,string2);
2: string2 = "\000ENDER "
1: string1 = "******"
My question is in what order the global variables are stored in the memory.
For the above example, from the output of size command 18 is the total size of the global variables and when the strcpy statement is executed, it is overwriting the first character of string2 with NULL in order to terminate string1 with NULL.
So, how the variables got stored in memory?
1) Is string1 followed by string2?
2) Is string2 followed by string1?
Could anybody help in this regard
Thanks
10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
How do I filter a long report, with the "STARTWORD" and "STOPWORD" as the variables to use in my awk command, to print the whole data segment that only contains the matched start/stop word?
awk '/start/, /stop/' file <- this prints the line, though I need to print the whole segment. Newline... (1 Reply)
Discussion started by: apalex
1 Replies
2. UNIX for Advanced & Expert Users
Hi,
as per my Unix admin all parameters in Ulimit are set to Unlimited in Hard limits but some how few profiles setting data segment part to limited number value. So i wanted to over write in my profile to set unlimited as hard limits are set to unlimited. What is the command to set ulimit for... (1 Reply)
Discussion started by: terala_s
1 Replies
3. UNIX for Advanced & Expert Users
Dear All,
How internally memory allocated when we declare the float data type.
how many bytes allocated for decimal and how many bytes for fraction.
kindly help me in this regards. (2 Replies)
Discussion started by: rajamohan
2 Replies
4. Solaris
Helloo Frd's,
How to clear uninitialized state in solaris 10 Services, the fallowing inetadm shows on my server. I tried svcadm clear, enable... not worked. And also i can't change to enable some of service on that.
sara4@root# inetadm
ENABLED STATE FMRI
disabled ... (6 Replies)
Discussion started by: madhu548
6 Replies
5. Programming
i wrote a tiny version of tail command using a large buffer statically allocated but, in a second time, i found another version in which i use a bidimensional array dynamically allocated.
here is the first version
/*my tiny tail, it prints the last 5 line of a file
*/
#include<stdio.h>... (4 Replies)
Discussion started by: lucasclaus
4 Replies
6. AIX
Hi guys,
Are all users authorised to modify the data segment and stack segment to unlimited on AIX?
Is a reboot required after giving ulimit -d unlimited?
Thanks
vandi (2 Replies)
Discussion started by: vandi
2 Replies
7. Shell Programming and Scripting
Hallo all i am trying to execute this script ...............
But this is throwing the error......
use of uninitialized value in subtraction in at icd_convert.pl line 156
use of uninitialized value in subtraction in at icd_convert.pl line 157
use of uninitialized value in subtraction in at... (1 Reply)
Discussion started by: suvenduperl
1 Replies
8. Programming
Hi,
Whether the following piece of code is placed in the read-only memory of code (text) segment or data segment?
char *a = "Hello";
I am getting two different answers while searching in google :( that's why the confusion is (7 Replies)
Discussion started by: royalibrahim
7 Replies
9. Solaris
Hi guys!
Could you tell me what's this figure about? (See the attached figure below.)
This is a representation of block allocation filesystem and extent allocation filesystem in Solaris.
Does this mean that in a block-based allocation, data are placed in individual blocks while in... (0 Replies)
Discussion started by: arah
0 Replies
10. Solaris
HI
I need help regarding telnet as I try to run the service it gives error
#svcs -xv svc:/network/telnet:default
svc:/network/telnet:default (Telnet server)
State: uninitialized since Wed May 15 16:46:41 2013
Reason: Restarter svc:/network/inetd:default is not running.
See:... (14 Replies)
Discussion started by: smazshah
14 Replies
TR(1) General Commands Manual TR(1)
NAME
tr - translate characters
SYNOPSIS
tr [ -cds ] [ string1 [ string2 ] ]
DESCRIPTION
Tr copies the standard input to the standard output with substitution or deletion of selected characters. Input characters found in
string1 are mapped into the corresponding characters of string2. When string2 is short it is padded to the length of string1 by duplicat-
ing its last character. Any combination of the options -cds may be used: -c complements the set of characters in string1 with respect to
the universe of characters whose ASCII codes are 01 through 0377 octal; -d deletes all input characters in string1; -s squeezes all strings
of repeated output characters that are in string2 to single characters.
In either string the notation a-b means a range of characters from a to b in increasing ASCII order. The character `' followed by 1, 2 or
3 octal digits stands for the character whose ASCII code is given by those digits. A `' followed by any other character stands for that
character.
The following example creates a list of all the words in `file1' one per line in `file2', where a word is taken to be a maximal string of
alphabetics. The second string is quoted to protect `' from the Shell. 012 is the ASCII code for newline.
tr -cs A-Za-z '