Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


stack overflow!

Postades av 2004-05-25 09:14:02 - Ted Johansson, i forum c++, Tråden har 4 Kommentarer och lästs av 2193 personer

Vad ska man göra om man får stack overflow? Jag har läst en massa om att man får det när man använder mer än den MB av minnet som man får när man startar programmet. Men vad ska jag göra åt det, mitt programm använder endast följande variabler:

int veckodag, dag, manad, ar, timme, minut, sekund, skottar, kalle=1;
char tveckodag[20], tmanad[20];

det är väll inte mycet????

och programet innehåller endast tre funktioner och det beror inte på dem jag har testat mig fram...

Snälla hjälp mig! kan an utöka den minnesgränsen som bara är på 1MB????

jag hittade precis något som hette YYMAXDEPTH och E_STORE ingen aning om det ens är C++ men jag ska läsa vidare om det, jag kan självklart ha helt fel!!

Mvh
Ted


Svara

Sv: stack overflow!

Postades av 2004-05-25 09:59:19 - Martin Adrian

Kolla att du inte har rekursion, dvs att en funktion anropar sig själv på nåt sätt.


Svara

Sv: stack overflow!

Postades av 2004-05-25 11:03:33 - Ted Johansson

här ärkoden snälla ta en titt på den jag hittar inga fel ;(

#include <fstream>
#include <constrea>
#include <conio>
#include <time>
#include <dir>
#include <iostream>
#include "includes\iodos.h"

int t1;

int allt();
int fel();
int main()
{

do
{
t1=allt();
}while (t1==-1);

return 0;

}

int allt()
{
dos_console();
int veckodag, dag, manad, ar, timme, minut, sekund, skottar, kalle=1;
char tveckodag[20], tmanad[20];

ifstream skottarinfile("skottar",ios::binary);
skottarinfile.read((char *)&skottar,sizeof(int));
skottarinfile.close();

clrscr();
cout
<< "Ange startvärden:" << endl
<< "Veckodag (1-7): ";
cin >> veckodag;
if(veckodag<1 || veckodag>7)
{
t1=fel();
if (t1==-2)
return -1;
}

cout << "\nDag (1-31): ";
cin >> dag;
if (dag<1 || dag>31)
{
t1=fel();
if (t1==-2)
return -1;
}

cout << "\nMånad: (1-12): ";
cin >> manad;
if (manad<1 || manad>12)
{
t1=fel();
if (t1==-2)
return -1;
}

cout << "\nÅr: ";
cin >> ar;
if (ar<0)
{
t1=fel();
if (t1==-2)
return -1;
}

cout << "\nTimme: (0-23): ";
cin >> timme;
if (timme<0 || timme>23)
{
t1=fel();
if (t1==-2)
return -1;
}

cout << "\nMinut (0-59): ";
cin >> minut;
if (minut<0 || minut>59)
{
t1=fel();
if (t1==-2)
return -1;
}

cout << "\nSekund (0-59): ";
cin >> sekund;
if (sekund<0 || sekund>59)
{
t1=fel();
if (t1==-2)
return -1;
}


while(kalle==1)
{
if (veckodag==1)
strcpy(tveckodag, "Måndag");
else if (veckodag==2)
strcpy(tveckodag, "Tisdag");
else if (veckodag==3)
strcpy(tveckodag, "Onsdag");
else if (veckodag==4)
strcpy(tveckodag, "Torsdag");
else if (veckodag==5)
strcpy(tveckodag, "Fredag");
else if (veckodag==6)
strcpy(tveckodag, "Lördag");
else if (veckodag==7)
strcpy(tveckodag, "Söndag");

if (manad==1)
strcpy(tmanad, "Januari");
else if (manad==2)
strcpy(tmanad, "Februari");
else if (manad==3)
strcpy(tmanad, "Mars");
else if (manad==4)
strcpy(tmanad, "April");
else if (manad==5)
strcpy(tmanad, "Maj");
else if (manad==6)
strcpy(tmanad, "Juni");
else if (manad==7)
strcpy(tmanad, "Juli");
else if (manad==8)
strcpy(tmanad, "Augusti");
else if (manad==9)
strcpy(tmanad, "September");
else if (manad==10)
strcpy(tmanad, "Oktober");
else if (manad==11)
strcpy(tmanad, "November");
else if (manad==12)
strcpy(tmanad, "December");

_setcursortype(_NOCURSOR);
clrscr();
cout << "Datum: " << tveckodag << " den " << dag << ":e " << tmanad << " " << ar << " Kl. " << timme << ":" << minut << ":" << sekund;
Sleep(990);

sekund++;

if (sekund==60)
{
sekund=0;
minut++;

if (minut==60)
{
minut=0;
timme++;

if (timme==24)
{
timme=0;
veckodag++;
dag++;
if (veckodag==8)
{
veckodag=1;
}
if (dag==29 && manad==2 && ar!=skottar)
{
dag=1;
manad++;
}
else if (dag==29 && manad==2 && ar==skottar)
{
}
else if (dag==30 && manad==2 && ar==skottar)
{
dag=1;
manad++;
skottar+=4;
}
else if (dag==31 && (manad==4 || manad==6 || manad==9 || manad==11))
{
dag=1;
manad++;
}
else if (dag==32 && (manad==1 || manad==3 || manad==5 || manad==7 || manad==8 || manad==10 || manad==12))
{
dag=1;
manad++;
}

if (manad==13)
{
manad=1;
ar++;
}
}

}
}
chdir("data");

ofstream veckodagoutfile("veckodag",ios::binary);
veckodagoutfile.write((char *)&veckodag,sizeof(int));
veckodagoutfile.close();

ofstream dagoutfile("dag",ios::binary);
dagoutfile.write((char *)&dag,sizeof(int));
dagoutfile.close();

ofstream manadoutfile("manad",ios::binary);
manadoutfile.write((char *)&manad,sizeof(int));
manadoutfile.close();

ofstream aroutfile("ar",ios::binary);
aroutfile.write((char *)&ar,sizeof(int));
aroutfile.close();

ofstream timmeoutfile("timme",ios::binary);
timmeoutfile.write((char *)&timme,sizeof(int));
timmeoutfile.close();

ofstream minutoutfile("minut",ios::binary);
minutoutfile.write((char *)&minut,sizeof(int));
minutoutfile.close();

ofstream sekundoutfile("sekund",ios::binary);
sekundoutfile.write((char *)&sekund,sizeof(int));
sekundoutfile.close();

ofstream skottaroutfile("skottar",ios::binary);
skottaroutfile.write((char *)&skottar,sizeof(int));
skottaroutfile.close();

chdir("..");

}
return 0;
}

int fel()
{
clrscr();
cout << "Haha, där skrev du minsan fel, tryck enter för att få försöka igen!";
getch();
return -2;
}


Svara

Sv: stack overflow!

Postades av 2004-05-25 12:17:59 - Niklas Jansson

Herregud... koden är bra snurrig.
Inte för att tjata eller vara otrevlig, men du har fortfarande fel tankesätt. Tänk på en funktion så här:
En funktion ska uppfylla en exakt specificerad uppgift och bara den uppgiften.

Att dela upp det i "allt()" och "fel()" hjälper dig inte mycket.

Förstår du nu varför jag snackar om att det är viktigt att ha rätt inställning till programmeringen?
Det är mycket svårt att konstatera vad det är som är fel, och det är ingen som orkar läsa igenom funktioner som är flera sidor långa. Det är inget "tufft" i att kunna skriva krånglig kod, det är bara onödigt och tar tid från riktiga problem.

Det bästa hade nog varit om du hade sagt precis vad du vill att programmet ska göra så kan vi strukturera upp det tillsammans. Då har du något lätthanterligt att utgå ifrån.


Svara

Sv: stack overflow!

Postades av 2004-05-25 21:41:08 - Håkan Borneland

Hej Ted!

I din kod har du en WHILE loop som körs så länge kalle är lika med 1.
Den loopen bryts aldrig, då kalle aldrig får något annat värde.

//Håkan


Svara

Nyligen

  • 14:24 CBD regelbundet?
  • 14:23 CBD regelbundet?
  • 14:22 Har du märkt några verkliga fördel
  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 616
27 953
271 709
5 734
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies