The UNIX and Linux Forums  

Go Back   A UNIX és Linux Forums > Top Fórumok > Magas szintű Programozás
.
google unix.com



Magas szintű Programozás Post kérdések C, C + +, Java, SQL, és más programozási nyelvek itt.

Több, UNIX és Linux fórum témák Ön által talált Hasznos
Szál Thread Starter Fórum Válaszok Utolsó hozzászólás
Melyik Base Level Filesets szükség egy külön program? cypher82 A UNIX a fejlett és szakértői Felhasználók 4 05-29-2008 09:07 AM
Segítség kell a C-program dwgi32 Magas szintű Programozás 2 11-19-2007 10:44 AM
Furcsa dolog az FSS és VGS mhenryj AIX 4 11-13-2007 04:42 PM
Furcsa eredményeket awk amatheny Shell programozás és Scripting 2 11-01-2007 06:12 PM
Fura üzenet???? lesstjm A UNIX a dummies Kérdések és válaszok 6 01-04-2002 10:01 AM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered by Powered by Google
 
LinkBack Téma eszközök Keresés a téma Rate Thread Megjelenítési módok
  #1 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Regisztrált felhasználó
  
 

Join Date: Nov 2007
Hozzászólások: 18
Furcsa C program. Help Needed

Szia,
Kérjük, olvassa el ezt:
Amikor egy nyilatkozatot:

char * i, j [15], * k;
majd ezt
sprintf (k "print.sh% s", i);

A program jól működik.

De ha megváltoztatom a nyilatkozatot, hogy:
char * i * k;
majd ezt
sprintf (k "print.sh% s", i);
Kapok egy Segmentation fault a "sprintf" kijelentés.

A program csak akkor működik, ha j tömb 15. Semmi kevesebb / több

Figyelem: j változó csak egy bábu. Én semmit vele.
Is tudom, hogy használ sprintf ahogyan én, az illegális. A mutató, anélkül hogy bármit, mielőtt egy ilyen nyilatkozatot.

Lehet, hogy hülye de valaki kérem, fejtse ki, miért ez történik? Találd meg valamit csinálni, hogy memóriája van elkülönítve.

Thanks in advance!
  #2 (permalink)  
Old 11-14-2007
kapus porter is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2007
Hozzászólások: 2965
Akartál írni véletlenszerű memória a "k" nem mutatott semmit. A kernel beállítása három választ ...

(a) let you do it

(b) a csapda, mert írásban csak olvasható memóriát, például a program image

(c) a csapda, mert a memória írás, amelyet nem osztottak ki az Ön számára
  #3 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Regisztrált felhasználó
  
 

Join Date: Nov 2007
Hozzászólások: 18
Nos, a fenti sorokat, tudtam tovább le:

1. egy esetben a K mutatott stdout (dont know-how-ját!), coz a memória tartalma az volt, hogy az én printf nyilatkozata előtt az sprintf. (Meglepő!)

2. Az egyik esetben, k mutatott a karakterlánc része a sprintf nyilatkozatot. Ezért újra, akkor nem illegális, és a program nem működik. (Úgy látszik ez lehetséges).

Azonban ez a fajta szemetet initializations érvényes, de úgy tűnik, hogy csak akkor történhet meg, ha a változó j nyilvánította. Különben, a program leállítja a SEGV.

De még mindig hiszem, hogy ez egy különleges és egyszeri eset. Találd ki, hogy ugyanezt a kódot ez nem működik, egy másik gép. (Mine is a Solaris).

Any comments / bemenet / további betekintést anyone?
  #4 (permalink)  
Old 11-14-2007
kapus porter is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2007
Hozzászólások: 2965
A verem, hogy a fő használ nem lesz érintetlen szűz memória, akkor használták fel, subroutine felhívja a Prolog program, tehát crt0.o (vagy akármi) előtt fő () is nevezik.

A memória valóban egy ismeretlen állapotú, de én meg pont, a tartalom is megismételhető, bizonyos feltételek mellett. Hívnám esetben deja vu.
  #5 (permalink)  
Old 11-14-2007
karthikb23 karthikb23 is offline
Regisztrált felhasználó
  
 

Join Date: Nov 2007
Hozzászólások: 18
hozzájárul . Azonban az ismételt fut a program változók kiosztása ugyanolyan memória helyet.
Még olvasatban nagy string (20 karakter), és azt eljuttatja sprintf, akkor meglepő, hogy hogyan nincs szegmentálási hibát.

Egyszer majd, ha "K" mutatva stdout, a hosszát a memória kellene megsértését, és a program kellene SEGV igaz?

Továbbá, ha egyáltalán "K" pontok stdout, hogy csinál egy síkban azonnal, azt fel kell gyorsítani az "K" ugye? coz lehet felülírni a korábbi tartalmát stdout.
  #6 (permalink)  
Old 11-14-2007
kapus porter is offline Forum Advisor  
Regisztrált felhasználó
  
 

Join Date: Jan 2007
Hozzászólások: 2965
Idézet:
Originally Posted by karthikb23 View Post
Továbbá, ha egyáltalán "K" pontok stdout, hogy csinál egy síkban azonnal, azt fel kell gyorsítani az "K" ugye? coz lehet felülírni a korábbi tartalmát stdout.
Próbáld ki, és ...?

Ön szerint gdb fut, és ha a dolgok tényleg megyünk?
  #7 (permalink)  
Old 11-14-2007
n1djs n1djs is offline
Regisztrált felhasználó
  
 

Join Date: Nov 2007
Hozzászólások: 12
Smile Furcsa C program. Help Needed

Van egy probléma mindkét esetben. Az egyik az, hogy sikerült elkapni, a másik pedig nem.
"char * i, j [15], * k" mondja a következőket:
Pont a memória és a felhívás, hogy a mutató i;
Teret emlékére, hogy 15 karakter, és hogy ezt a területet j;
és pont a memória és a felhívás, hogy a mutató k;

Amikor megpróbálja do "sprintf (k" print.sh% s ", i);" Ön azt kérdezi, hogy a számítógép botot a string "print.sh? A memória hely, rámutatott, hogy a mutató változó k. A te bajod, hogy nem juttatott olyan térben, hogy a string a mutató helyét k, k jelenleg csak mutatott néhány véletlenszerű memória helyét, és nem tér már kiosztott, hogy valamit a memória helyét jelzi, hogy a k.

Ez az oka, hogy meghal. Ennek az az oka, hogy doensn't die (még) a példa, ahol j kijelölt helyen van, hogy legalább néhány helyet osztottak ki a veremből, és k valószínűleg véletlenül mutat ott, és ennek corrupting j, de nem okoz segv (még).

Azt javasoljuk, hogy menjen fel a tanulmányi különbségek * k, k [10], k [10,10] és ** k. Ha érti, mi ezeket a különböző formáit jelenti, te sysadmin lesz sokkal jobb napot.
Closed Thread

Könyvjelzõk

Téma eszközök Keresés a téma
Keresés a téma:

Részletes keresés
Megjelenítési módok Rate this thread
Rate this thread:

Posting szabályzat
Ön nem post new threads
Ön nem post válaszok
Ön nem post Csatolmányok
Ön nem szerkeszteni az üzeneteidet

BB kód van Be
Smilies vannak Be
[IMG] kód Be
HTML kód Ki
Trackbacks vannak Be
Pingbacks vannak Be
Refbacks vannak Be




Minden idő GMT -4. Az idő most 04:19 AM.


Powered by: vBulletin, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Nyelvre lefordítva Powered by .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
A UNIX és Linux Fórum Tartalom Copyright © 1993-2009. Minden jog Reserved.Ad menedzsment RedTyger

Content Relevant URLs by vBSEO 3.2.0