Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - C
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Henrik+Kleihe
Gast





BeitragVerfasst am: 04. Feb 2002 18:55   Titel: Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

Hallo.
Ich habe vor kurzen mein gekauftes SuSE Linux 7.2 Professionell mit SuSE Linux 7.3 von einer PC-WELT-CD geupdatet (=> Kernel 2.4.10). Seitdem habe ich folgendes Problem: Wenn ich ganz einfache C-Programm ausführe, wird irgendwann "Segmentation fault" bzw. "Speicherzugriffsfehler" ausgegeben.
Der Quellcode des Programmes ist einwandfrei:
#include <stdio.h>

main()
{
int a, b, summe;
printf("1. Summand: ");
scanf("%i", a);
printf("
2. Summand: ");
scanf("%i", b);
summe=a+b;
printf("
%i %i", a+b, summe);
}


Ich habe das Programm mal im gdb laufen lassen. Nach eingabe von Summand 2 gibt der gdb folgendes aus: "Program received signal SIGSEGV, Segmentation fault.
0x4000b250 in _dl_runtime_resolve () from /lib/ld-linux.so.2"

Was ist das Problem?

Vielen dank im Voraus!
 

tj
Gast





BeitragVerfasst am: 04. Feb 2002 20:56   Titel: Re: Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

Hi,

ich denke, dass Dein C-Programm a bzw. b bei dem Aufruf von scanf als Pointer interpretiert (siehe 'man scanf'). Einen Typprüfung kann ja leider nicht stattfinden, da scanf mit einer variablen Liste von Argumenten umgehen muss.Wenn Du also a und b durch &a und &b ersetzt, dann sollte es gehen...

tj
 

bakunin



Anmeldungsdatum: 16.08.1999
Beiträge: 597
Wohnort: Lorsch (Südhessen)

BeitragVerfasst am: 04. Feb 2002 21:49   Titel: Re: Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

Hi!

> Einen Typprüfung kann ja leider nicht stattfinden, da scanf mit einer variablen Liste von Argumenten umgehen muss.

Das stimmt so nicht. GCC erlaubt __attribute__ Angaben in Funktionbsdeklarationen, die es dem Compiler ermöglichen, eine entsprechende Prüfung vorzunehmen. Allerdings müsste man auch noch die Warnungen des Compilers aktivieren, sonst gibt er keine aus.

Cheers,
GNU/Wolfgang
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 05. Feb 2002 9:29   Titel: Re: Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

und jetzt noch ein #include und return und den Funktionsheader von main() korrekt geschrieben...
code:

#include <stdio.h> // scanf

int main(void)
{
int a;
int b;
int summe;

printf("1. Summand: ");
scanf("%i", &a);

printf("2. Summand: ");
scanf("%i", &b);

summe=a + b;
printf("%i + %i = %i", a, b, summe);

return 0;
}

 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

heinrich



Anmeldungsdatum: 22.09.1999
Beiträge: 219
Wohnort: N49.137 E8.544

BeitragVerfasst am: 05. Feb 2002 9:40   Titel: Re: Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

oder mit C++

code:

#include <iostream> // cin, cout, endl

using namespace std;

int main(void)
{
int a;
int b;
int summe;

cout << "1. Summand: ";
cin >> a;

cout << "2. Summand: ";
cin >> b;

summe=a + b;
cout << a << " + " << b << " = " << summe << endl;

return 0;
}

 
Benutzer-Profile anzeigen Private Nachricht senden AIM-Name

Henrik Kleihe
Gast





BeitragVerfasst am: 05. Feb 2002 16:46   Titel: Re: Einfache C-Programme verursachen unter Linux einen Speicherzugriffsfehler

Ach ja, stimmt.
Danke!
 

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - C Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy