Visit Our UNIX and Linux User Community


Reason for Segmentation fault


 
Thread Tools Search this Thread
Top Forums Programming Reason for Segmentation fault
# 8  
Old 11-01-2007
Quote:
Originally Posted by royalibrahim
The following program fails with "Segmentation fault" error message, while I try to run in Ubuntu (Debian) Linux m/c. It is not creating any core file, so I could not cross examine it with the debugger. See the comments for much better understanding. Could any one tell me the exact reason why the program is failing?

Code:
int main( ) {
    char *ch; (or) ch = 'A';   // but if it assigned to any string then no segmentation fault
    int *p = (int*) &ch[0];   // or &ch[1], &ch[2], …. ch;      but &ch runs fine
    printf("%c", *p);           // Segmentation Fault: only if you use this print statement
}

You didn't allocate memory to ch.
Try:
Code:
int main( ) {
    char *ch = malloc(1); 
    *ch = 'A'; 
    int *p = (int*) &ch[0];   // or &ch[1], &ch[2], …. ch;      but &ch runs fine
    printf("%c", *p);           // Segmentation Fault: only if you use this print statement
}

# 9  
Old 11-21-2007
Just to sidetrack a bit, im aware that

Code:
char *ch;
*ch = 'A';

should be the correct way to do the ptr value assignment, however I did a bit of investigating on my own and gcc warned me of a type conversion error (something about from an int ptr to a char)

However, if I do

Code:
char *ch;
*ch = "A";

gcc is happy

Is it just me, or you cannot assign char ptrs to a single quote character ?
# 10  
Old 11-21-2007
Quote:
Originally Posted by JamesGoh
Is it just me, or you cannot assign char ptrs to a single quote character ?
You need memory allocated to ch, any of the following are valid..


Code:
char *ch=malloc(1);
*ch='A';

Code:
char *ch=malloc(1);
ch[0]='A';

Code:
const char *ch="A";

Code:
char ach[1];
char *ch=ach;
ch[0]='A';

you need to understand (a) memory (b) pointers

otherwise move to directly to Java.
# 11  
Old 11-21-2007
Found out another way to do it which sticks strictly to the theory behind pointers

Code:
char *ptr;
char c='a';
ptr = &c;

Please feel free correct me if I am wrong, as I want to show that I properly understand pointer theory
# 12  
Old 11-21-2007
Quote:
Originally Posted by porter
You need memory allocated to ch, any of the following are valid..


Code:
char *ch=malloc(1);
*ch='A';

Code:
char *ch=malloc(1);
ch[0]='A';

Code:
const char *ch="A";

Code:
char ach[1];
char *ch=ach;
ch[0]='A';

you need to understand (a) memory (b) pointers

otherwise move to directly to Java.
Hi,

Agree with what Porter state, it is a good practise to allocate a memory block by using malloc rather than directly referencing the pointer to a hardcoded value, this will created problem during run time althought the code can be compiled.

Cheers
# 13  
Old 11-22-2007
By the way, many Linux distributions disable core file creations by default. Stupid for developers, but safer for users (I guess.)

Try:
Code:
ulimit -c unlimited

Before running your program, of course Smilie You should then get a core on a SIGSEGV.
# 14  
Old 12-06-2007
The method I suggested for assigning characters to pointers

Code:
char *ptr;
char c='a';
ptr = &c;

compiled and ran fine . So if its working properly, why should I still use the malloc() and free() method to assign and deallocate pointer memory ? Is this due to the greater control one is given in manipulating the memory from the heap ?

Previous Thread | Next Thread
Test Your Knowledge in Computers #847
Difficulty: Medium
Proximity marketing is the localized wireless distribution of advertising content associated with a particular place.
True or False?

10 More Discussions You Might Find Interesting

1. Programming

C. To segmentation fault or not to segmentation fault, that is the question.

Oddities with gcc, 2.95.3 for the AMIGA and 4.2.1 for MY current OSX 10.14.1... I am creating a basic calculator for the AMIGA ADE *NIX emulator in C as it does not have one. Below are two very condensed snippets of which I have added the results inside the each code section. IMPORTANT!... (11 Replies)
Discussion started by: wisecracker
11 Replies

2. Programming

Segmentation fault

I keep getting this fault on a lot of the codes I write, I'm not exactly sure why so I'd really appreciate it if someone could explain the idea to me. For example this code #include <stdio.h> main() { unsigned long a=0; unsigned long b=0; int z; { printf("Enter two... (2 Replies)
Discussion started by: sizzler786
2 Replies

3. Homework & Coursework Questions

Segmentation Fault

this is a network programming code to run a rock paper scissors in a client and server. I completed it and it was working without any error. After I added the findWinner function to the server code it starts giving me segmentation fault. -the segmentation fault is fixed Current problem -Also... (3 Replies)
Discussion started by: femchi
3 Replies

4. Programming

Using gdb, ignore beginning segmentation fault until reproduce environment segmentation fault

I use a binary name (ie polo) it gets some parameter , so for debugging normally i do this : i wrote script for watchdog my app (polo) and check every second if it's not running then start it , the problem is , if my app , remain in state of segmentation fault for a while (ie 15 ... (6 Replies)
Discussion started by: pooyair
6 Replies

5. Programming

segmentation fault

What is segmentation fault(core dumped) (1 Reply)
Discussion started by: gokult
1 Replies

6. Programming

segmentation fault

If I do this. Assume struct life { char *nolife; } struct life **life; // malloc initialization & everything if(life->nolife == 0) Would I get error at life->nolife if it is equal to 0. wrong accession? (3 Replies)
Discussion started by: joey
3 Replies

7. UNIX for Dummies Questions & Answers

Segmentation Fault

Hi, While comparing primary key data of two tables thr bteq script I am getting this Error. This script is a shell script. *** Error: The following error was encountered on the output file. Script.sh: 3043492 Segmentation fault(coredump) Please let me know how to get through it. ... (5 Replies)
Discussion started by: monika
5 Replies

8. Linux

Segmentation fault

Hi, on a linux Red HAT(with Oracle DB 9.2.0.7) I have following error : RMAN> delete obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 2 using channel ORA_DISK_1 Segmentation fault What does it mean ? And the solution ? Many thanks. (0 Replies)
Discussion started by: big123456
0 Replies

9. AIX

Segmentation fault

Hi , During execution a backup binary i get following error "Program error 11 (Segmentation fault), saving core file in '/usr/datatools" Riyaz (2 Replies)
Discussion started by: rshaikh
2 Replies

10. Programming

segmentation fault

hi all i'm trying to execute a c program under linux RH and it gives me segmentation fault, this program was running under unix at&t anybody kow what the problem could be? thanx in advance regards (2 Replies)
Discussion started by: omran
2 Replies

Featured Tech Videos