Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : erreur mémoire pour un décompte [ Archives / Divers ] (yeager)

lundi 6 janvier 2003 à 09:48:30 | erreur mémoire pour un décompte

yeager

Bonjour

j'ai fait un petit code pour lancer un programme toutes les 30 secondes.
Lorsque je lance le débugger, ça marche nichel.
Mais lorsque je lance le programme tout seul ça merde.
C'est une fonction récurcive qui pour l'instant est censée me dire quand les 30 secondes sont écoulées.

merci de votre aide


yeager

#include <stdio.h>
#include <winsock2.h>
#include <conio.h>
#include <time.h>

void test_fonction_temps()
{
time_t instant_initial = 0;

instant_initial = time (NULL);

if (instant_initial == ((time_t) - 1))
{
fprintf(stdout,"erreur d'horloge");
}
else
{
fct_temps(instant_initial);
}
}

void fct_temps(time_t instant_initial)
{
char saisie = 0;
time_t instant_final;
double ecart=0;


instant_final = time (NULL);

if (instant_final == ((time_t) - 1))
{
fprintf(stdout,"erreur d'horloge");
getch();
}
else
{
ecart = difftime(instant_final,instant_initial);
if (ecart >= 30)
{
fprintf(stdout,"cela fait trentes secondes");
getch();
}
else
{
fct_temps(instant_initial);
}
}

}

void test_fonction_temps()
{
time_t instant_initial = 0;


instant_initial = time (NULL);

if (instant_initial == ((time_t) - 1))
{
fprintf(stdout,"erreur d'horloge");
}
else
{
fct_temps(instant_initial);
}
}


void main()
{
test_fonction_temps();
}

lundi 6 janvier 2003 à 10:25:43 | Re : erreur mémoire pour un décompte

jcecchi

Salut,

Le classique probleme des fonctions recursives : le depassement de memoire.
A chaque appel tu crees 2 time_t, 1 char et 1 double.
En 30s la fonction est tres tres tres souvent sollicite, il arrive donc un moment ou t'as plus assez de memoire et pouf le programme.
A moins qu'il soit imperatif pour toi de faire de cette maniere, utilise plutot une boucle while.

Je sais pas si c'est une erreur de copier/coller mais il y a deux fois la fonction test_fonction_temp().

-------------------------------
Réponse au message :
-------------------------------

> Bonjour
>
> j'ai fait un petit code pour lancer un programme toutes les 30 secondes.
> Lorsque je lance le débugger, ça marche nichel.
> Mais lorsque je lance le programme tout seul ça merde.
> C'est une fonction récurcive qui pour l'instant est censée me dire quand les 30 secondes sont écoulées.
>
> merci de votre aide
>
>
> yeager
>
> #include <stdio.h>
> #include <winsock2.h>
> #include <conio.h>
> #include <time.h>
>
> void test_fonction_temps()
> {
> time_t instant_initial = 0;
>
> instant_initial = time (NULL);
>
> if (instant_initial == ((time_t) - 1))
> {
> fprintf(stdout,"erreur d'horloge");
> }
> else
> {
> fct_temps(instant_initial);
> }
> }
>
> void fct_temps(time_t instant_initial)
> {
> char saisie = 0;
> time_t instant_final;
> double ecart=0;
>
>
> instant_final = time (NULL);
>
> if (instant_final == ((time_t) - 1))
> {
> fprintf(stdout,"erreur d'horloge");
> getch();
> }
> else
> {
> ecart = difftime(instant_final,instant_initial);
> if (ecart >= 30)
> {
> fprintf(stdout,"cela fait trentes secondes");
> getch();
> }
> else
> {
> fct_temps(instant_initial);
> }
> }
>
> }
>
> void test_fonction_temps()
> {
> time_t instant_initial = 0;
>
>
> instant_initial = time (NULL);
>
> if (instant_initial == ((time_t) - 1))
> {
> fprintf(stdout,"erreur d'horloge");
> }
> else
> {
> fct_temps(instant_initial);
> }
> }
>
>
> void main()
> {
> test_fonction_temps();
> }

lundi 6 janvier 2003 à 10:58:47 | Re : erreur mémoire pour un décompte

yeager

merci pour ton aide
Je dois impérativement utiliser la récursivité.
J'ai déclaré ecart et instant final dans test_fonction_temps en même temps que instant_initiale. J'ai viré la variable saisie qui me sert à rien pour l'instant.
J'ai toujours une erreur mémoire, mais en effet je pense que j'avais fait une grosse connerie en déclarant ainsi ecart et instant_final.
Merci

a+



-------------------------------
Réponse au message :
-------------------------------

> Salut,
>
> Le classique probleme des fonctions recursives : le depassement de memoire.
> A chaque appel tu crees 2 time_t, 1 char et 1 double.
> En 30s la fonction est tres tres tres souvent sollicite, il arrive donc un moment ou t'as plus assez de memoire et pouf le programme.
> A moins qu'il soit imperatif pour toi de faire de cette maniere, utilise plutot une boucle while.
>
> Je sais pas si c'est une erreur de copier/coller mais il y a deux fois la fonction test_fonction_temp().
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour
> >
> > j'ai fait un petit code pour lancer un programme toutes les 30 secondes.
> > Lorsque je lance le débugger, ça marche nichel.
> > Mais lorsque je lance le programme tout seul ça merde.
> > C'est une fonction récurcive qui pour l'instant est censée me dire quand les 30 secondes sont écoulées.
> >
> > merci de votre aide
> >
> >
> > yeager
> >
> > #include <stdio.h>
> > #include <winsock2.h>
> > #include <conio.h>
> > #include <time.h>
> >
> > void test_fonction_temps()
> > {
> > time_t instant_initial = 0;
> >
> > instant_initial = time (NULL);
> >
> > if (instant_initial == ((time_t) - 1))
> > {
> > fprintf(stdout,"erreur d'horloge");
> > }
> > else
> > {
> > fct_temps(instant_initial);
> > }
> > }
> >
> > void fct_temps(time_t instant_initial)
> > {
> > char saisie = 0;
> > time_t instant_final;
> > double ecart=0;
> >
> >
> > instant_final = time (NULL);
> >
> > if (instant_final == ((time_t) - 1))
> > {
> > fprintf(stdout,"erreur d'horloge");
> > getch();
> > }
> > else
> > {
> > ecart = difftime(instant_final,instant_initial);
> > if (ecart >= 30)
> > {
> > fprintf(stdout,"cela fait trentes secondes");
> > getch();
> > }
> > else
> > {
> > fct_temps(instant_initial);
> > }
> > }
> >
> > }
> >
> > void test_fonction_temps()
> > {
> > time_t instant_initial = 0;
> >
> >
> > instant_initial = time (NULL);
> >
> > if (instant_initial == ((time_t) - 1))
> > {
> > fprintf(stdout,"erreur d'horloge");
> > }
> > else
> > {
> > fct_temps(instant_initial);
> > }
> > }
> >
> >
> > void main()
> > {
> > test_fonction_temps();
> > }
>



Cette discussion est classé dans : erreur, temps, time, initial, instant


Répondre à ce message

Sujets en rapport avec ce message

Chronometrer le temps d'éxecution d'une fonction en C [ par poiuytrez3 ] Bonjour, je cherche comment chronometrer le temps d'éxecution d'un tri. Je sais qu'il faut utiliser le fichier time.h avec la fonction time(), j'ai e Temps d'éxecution. [ par NueclearSnake ] Bonjour, j'iamerais calculer le temps d'exécution d'une de mes fonctions.J'ai essayé et je trouve tout le temps 0;J'ai donc enlevé toutes mes fonction Initialisation de structure [ par goutbouyo ] Salut,J'ai une structure temps:struct temps { float time, elapsedTime, lastTime;};Je l'itinialise :<table border=0 cel Temps d'attente précis (~ms) [ par Arateris ] Bonjour, pour une appli en C/C++, j'aurais besoin qu'un thread se mette en pause pour une durée courte (1,2,5 ou 10ms) de facon fiable. Mon but étan Socket Protocole HTTP [ par victorcoasne ] Bonjour,J'ai fait un proxy qui intègre un serveur WEB et lorsque que je lui demande de s'interroger, je me rends compte qu'il y a une erreur.Cette err Interview du créateur du C++ [ par rt15 ] Salut,Je l'ai pas mis dans le bar pour que ça reste entre utilisateurs du C++... Désolé si ça n'a pas sa place sur le forum, mais j'ai franchement rig Optimisation des intersections et des unions [ par islem1982 ] Salut tout le monde,Je suis en train de programmer un algorithme qui effectue un nombre énorme d'unions entre des ensembles ordonnés (ordre lexicograp C obtenir le temps [ par Yunchi ] Bonjour, J'ai un programme qui permet de trier un document. Mais le programme est assez long a executer : il met autour de 60s pour trier un document Thread en general [ par Yunchi ] Bonjour, J'ai deja eu affaire aux thread lors d'un projet en java pour afficher en temps reel les informations attendre que la fonction se finissent Temps écoulé depuis le 1er Janvier 1970 en microsecondes [ par boudafc ] Bonjour !Voilà, j'aimerais savoir sous windows, le temps à la microseconde qui s'est écoulé depuis le 1er Janvier 1970.Sous linux, j'utilise la foncti


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 1,934 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.