kdw
Joined: 05 May 2006 Posts: 1485
|
Posted: 30.01.2008, 12:08 Post subject: Laufzeitfehler durch Stack Overflow ... |
|
|
Hallo Forum.
Das folgende C-basierte Code-Fragment:
Code: | int main (int argc, char* argv[])
{
int nLen= sizeof (struct sockaddr), nRet, s1;
long lRet;
char szBuf[1024*16], szWday[16], szMon[16];
struct sockaddr_in saServer;
struct tm *tmPtr;
time_t currTime;
:
:
} |
kann beim uClinux des PNP/5280 zu einem Laufzeitfehler führen. Ursache ist die Deklaration „szBuf[1024*16]“. Dadurch wird ein 16 KBytes großes Array erzeugt, welches im Stack des übersetzten Programms liegt. Dadurch entsteht zur Laufzeit ein Stack Overflow.
Abhilfe schafft eine globale Variable (nicht schön, aber hilfreich):
Code: | char szBuf[1024*16];
int main (int argc, char* argv[])
{
int nLen= sizeof (struct sockaddr), nRet, s1;
long lRet;
char szWday[16], szMon[16];
struct sockaddr_in saServer;
struct tm *tmPtr;
time_t currTime;
:
:
} |
Dadurch liegt das 16 KBytes große Array nun im Datensegment der Anwendung.
Gruß
KDW |
|