Avatar billede gumbert Nybegynder
21. april 2003 - 20:47 Der er 9 kommentarer og
1 løsning

Error

Jeg får ingen errors når jeg compiler og linker følgende kode men når jeg kører .exe filen

#include <iostream.h>
#include <stdlib.h>
#include <new.h>

void slut_program(void)
{
    cout<<"Lager-allokering mislykkedes\n";
    exit(1);
}

void main(void)
{
    char *pointer;

    set_new_handler(slut_program);//Ingen fejl hvis jeg fjerne denne linie

    do{
        pointer=new char[1000];

        cout<<"10000 byte er allokeret\n";
   
    }while (1);
}

det er set_new_handler det er galt med men hvad gør jeg forkert

ps. bruger MVC
Avatar billede esoulman Nybegynder
21. april 2003 - 21:39 #1
set_new_handler(slut_program()); ikke noget med en parentes der er glemt el. lignende?
Avatar billede gumbert Nybegynder
21. april 2003 - 21:46 #2
hvis jeg : "set_new_handler(slut_program());" for jeg en error når jeg compiler
Avatar billede tam Nybegynder
21. april 2003 - 22:17 #3
Prøv at deklarere void
slut_program(void)
som
void __cdecl slut_program(void)
i stedet

#include <new> i stedet for <new.h>

Du bruger lidt et mix af denne funktion fra både crt og STL...
Avatar billede jpk Nybegynder
22. april 2003 - 10:20 #4
Følgende virker fint hos mig...

#include <iostream>
#include <new>
using namespace std;

void slut_program(void)
{
    cout<<"Lager-allokering mislykkedes\n";
    exit(1);
}

void main(void)
{
    char *pointer;

    set_new_handler(slut_program);//Ingen fejl hvis jeg fjerne denne linie

    do{
        pointer=new char[5000000];

        cout<<"5000000 byte er allokeret\n";
   
    }while (1);
}
Avatar billede tam Nybegynder
22. april 2003 - 11:37 #5
Yeps, men du har så også ændret
#include <new.h> til #include <new>
Avatar billede jpk Nybegynder
22. april 2003 - 11:42 #6
Ja, gør det noget?
.h versionerne er jo forældede..!
Avatar billede tam Nybegynder
22. april 2003 - 11:47 #7
forældede vil jeg nu ikke kalde det, men det gør en forskel, ja...

Det gør at det virker, hvis du bruger new.h skal der laves lidt om i syntaksen for at det virker ;)
Avatar billede jpk Nybegynder
22. april 2003 - 12:01 #8
Okay, "deprecated"
Avatar billede jpk Nybegynder
22. april 2003 - 12:07 #9
Virker det muligvis med denne dekleration?
void __cdecl slut_program()
Avatar billede gumbert Nybegynder
22. april 2003 - 14:48 #10
ok tak 4 hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester