Dead_Rabbit Skrevet 30. desember 2004 Del Skrevet 30. desember 2004 Nå skjønner jeg! Men jeg skjønner ikke hvorfor du satte så stor verdi i for-loopen. (Derfor satte jeg en så stor verdi i for-loopen, så det skulle være "garantert" at jeg kom utenfor min egen prossess's område). Dette er bugs fra helvette. Lenke til kommentar
søppel Skrevet 30. desember 2004 Del Skrevet 30. desember 2004 (endret) Oki, Tenk deg to programmer som ligger etterhverandre i datamaskinens minne: 99 bytes med kode og data her (under kjøring) 99 bytes med kode og data her (under kjøring) Hvis du tenker deg at OSet har som oppgave å passe på disse programmenes områder (som er anvist v.h.a. "quote-områder"). Program A har ikke lov til å se eller rote med B's minneområde, og omvendt. Videre, at man i starten (addresse 0) av program a har kode som refererer til nåværende addresse + 101. Da har program a gått utenfor sitt område og OSet avslutter det. Hadde A referert til nåværende addresse + 50 hadde dette gått helt greit (men fy flate å kjipt hvis det ikke var meningen at det skulle være 50 og noe annet enn det du forventet blir endret på) - siden dette fortsatt er innenfor A's område. Grunnen til at jeg satte stor verdi for for-loopen var for å garantere at den tilslutt gikk utenfor sitt område. Jeg kunne i grunn i stedet ha gjordt noe slikt: int* a; cout << a[100000000] << endl; ..for å garantere at jeg havnet utenfor mitt eget område. Det som egentlig skjer (under Linux i hvertfall) er at OSet sender et signal til programmet. Poenget med dette signalet er at du skal kunne sette opp en signal-håndterer (en vanlig funksjon) som f.eks. lagrer data før du gir brukeren en vennlig beskjed om at programmet må/bør avsluttes. Når du ikke har satt opp en signalhåndterer gjør OSet det som er "default"; avslutter programmet. Håper ting ble klarere - ting er m.a.o. rimelig åpent og flatt - og du står fritt til å gjøre ganske mye rart du sansynligvis egentlig ikke vil gjøre. Må forresten legge til at du kan opprette/allokere noe som kalles "shared memory". Da kan flere programmer/prosesser ha tilgang til samme område, dette er veldig kjappt. (man shmget) Edit: Sjekk om du finner noe om "protected mode" på wikipedia eller v.h.a. google ellernoe. Dette er rimelig lavnivå - men det er greit å i det minste være klar over det. (jeg foretrekker i praksis å holde meg så høyt som mulig så lenge som mulig) Edit2: zirener (posten under): n.p. :] Endret 30. desember 2004 av søppel Lenke til kommentar
Dead_Rabbit Skrevet 30. desember 2004 Del Skrevet 30. desember 2004 (endret) Skjønner det mye bedre nå! Takk for en jævlig god forklaring! Edit: Det eneste jeg ikke helt skjønner, er hvordan du kan "garantere" at du "trår over" en annen prosess ved å sette for-loop`en tin 10000. Er det fordi programmet sansynligvis ikke er så krevende at det vil allokere så mye minne? Tror jeg skønte det bedre når jeg skulle forklare det hva jeg ikke skjønte! Endret 30. desember 2004 av zirener Lenke til kommentar
søppel Skrevet 30. desember 2004 Del Skrevet 30. desember 2004 (endret) Er det fordi programmet sansynligvis ikke er så krevende at det vil allokere så mye minne? Ja, jeg tar en sjans og regner det som sansynlig. ..men ha i bakhodet at minnet kan være allokert i fragmenter -- så har man (u)flaks, så treffer man innenfor sitt eget område uansett. Edit: Derfor er det kanskje greit å prøve flere ganger -- som i for-loopen, altså når jeg var ute etter en SIGSEGV. Endret 30. desember 2004 av søppel Lenke til kommentar
GenericName Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 (endret) ... Endret 11. januar 2011 av Token Lenke til kommentar
Fredrik90 Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 håper noen kan se en feil her. KODE: struct tFace { int vertIndex[3]; // indicies for the verts that make up this triangle int coordIndex[3]; // indicies for the tex coords to texture this face }; FEILMELDING: 16 C:\Documents and Settings\Eier\Skrivebord\Flight-x\Obj.h multiple types in one declaration håper på et raskt svar. mvh. Fredrik Lenke til kommentar
Dead_Rabbit Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 Ser ikke veldig ut som at det er noen feil der. Er vel kansje noe følgefeil eller noe det der. Kansje du kan paste litt mer kode? Lenke til kommentar
GenericName Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 (endret) ... Endret 11. januar 2011 av Token Lenke til kommentar
Dead_Rabbit Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 Kan du udype litt mer prog master? Jeg skjønner ikke helt hva du mener. Hvilken bok leser du? Siterer meg selv jeg.. Lenke til kommentar
medi8or Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 Jeg har fått et problem med et program med if else. If'en din har stor bokstav.. Regner med at "ting" er casesensitive.. Lenke til kommentar
søppel Skrevet 4. januar 2005 Del Skrevet 4. januar 2005 (endret) prog master: // areal2.cpp // // Programmet beregner arealet av trekant eller sirkel avhengig av // brukerens ønske // #include<iostream> using namespace std; int main() { const char trekant = 'T'; const char rektangel = 'R'; char valg; cout << "Trekant eller sirkel (" << trekant << "/" << rektangel << ") ? "; cin >> valg; double areal; // If (valg == trekant) { // ***FEILMELDING***: error: `If' undeclared (first use this function) if(valg == trekant) { double grunnlinje; double hoyde; cout << "Skriv grunnlinje og hoyde : "; cin >> grunnlinje >> hoyde; areal = grunnlinje * hoyde / 2; } // trekantberegning else { // rektangelberegning // double grunnlinje2 // ***FEILMELDING***: error: expected primary-expression before "double" double grunnlinje2; //double hoyde2 // ***FEILMELDING***: error: `hoyde2' does not name a type double hoyde2; cout << "skriv to sider av et rektangel: "; cin >> grunnlinje2 >> hoyde2; areal = grunnlinje2 * hoyde2; } // rektangelberegning cout << "Arealet blir: " << areal; return 0; } // main Se om du greier å forstå det kompileren sier til deg. Konstentrer deg om den første feilmeldingen (eller de 2 første) - og ta én om gangen, rekompiler -- og rett én -- rekompiler .. rett én ....................... Edit: ..k, alt er står helt rett, det veit jeg... Av en eller annen grunn tviler jeg sterkt .. Endret 4. januar 2005 av søppel Lenke til kommentar
glad Skrevet 9. januar 2005 Del Skrevet 9. januar 2005 #include <cstdlib> #include <iostream> #include <time.h> using namespace std; int main(int argc, char *argv[]) { int a; cout<<"velg nivå"<<endl; cin >> a; switch (a) { case 1: srand (time(0)); int b = rand (); int c = rand (); cout<<b<<"+"<<c<<endl; int d, e, f; cin >> d; e=b+c; f=e; if (e == d) { cout<<"flott"<<endl; system("pause"); } else { cout<<"feil"<<endl; system("pause"); } break; case 2: srand(time(0)); int aa = rand (); int bb = rand (); cout<<aa<<"*"<<bb<<endl; int cc, dd, ee; cin >> cc; dd=aa*bb; ee=dd; if(ee == cc) { cout<<"flott"<<endl; system("pause"); } else { cout<<"feil"<<endl; system("pause"); } break; } return EXIT_SUCCESS; } Lenke til kommentar
søppel Skrevet 9. januar 2005 Del Skrevet 9. januar 2005 (endret) Og rydd opp i koden, fjern unødvendige mellom rom, legg til nødvendigemellomrom, bruk [ code ]-taggene, forklar hva du er ute etter og hva som skjer. Edit: Og hva er det her for noe? a + b = rand() - c * d; if(c+1==a) then { cout<<"riktig" <<endl;} o.s.v...o.s.v. .. Kan du ikke begynne å gi andre navn enn a, b, og c på ting? Anstreng deg litt mer, om du ønsker at folk skal forstå hva problemet er og hva du er ute etter .. Endret 9. januar 2005 av søppel Lenke til kommentar
genstian Skrevet 9. januar 2005 Forfatter Del Skrevet 9. januar 2005 hva med og fjerne 1 srand? Lenke til kommentar
☀ ❄ Skrevet 9. januar 2005 Del Skrevet 9. januar 2005 hva med og fjerne 1 srand? Selv om det sannsynligvis er unødvendig (dette er forøvrig et typisk brennbart diskusjonstema) er det på ingen måte skadelig å ha flere srand()-kall. Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå