IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

[Sécurité] Erreur d'allocation mémoire


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut [Sécurité] Erreur d'allocation mémoire
    Bonjour

    J'ai un petit problème. Je veux pouvoir créer un tableau d'objet. Donc, dans un script PHP, j'ai la classe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    <?php
    class siRNA{
         var $sens;
         var $antisens;
         var $start;
         var $enthalpy;
         var $entropy;
         var $MW;
         var $GC;
         var $Tm;
         var $score;
     
         function siRNA(){
             $sens = "";
             $antisens = "";
             $start = 0;
             $enthalpy = 0;
             $entropy = 0;
             $MW = 0;
             $GC = 0;
             $Tm = 0;
             $score = 0;
         }
     
         function setSens($chain){
             $this->sens=$chain;
         }
     
         function setAntisens($chain){
             $this->antisens=$chain;
         }
     
         function setStart($value){
             $this->start=$value;
         }
     
         function setEnthalpy($value){
             $this->enthalpy=$value;
         }
     
         function setEntropy($value){
             $this->entropy=$value;
         }
     
         function setMW($value){
             $this->MW=$value;
         }
     
         function setGC($value){
             $this->GC=$value;
         }
     
         function setTm($value){
             $this->Tm=$value;
         }
     
         function setScore($value){
             $this->score=$value;
         }
     
     }
    ?>
    Et dans un autre script, je fais mon tableau d'objet:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    <?
    require_once("siRNA.php");
     
    for($i=0; $i<count($data); $i+2){
        $siRNA = new siRNA();
        $siRNA->setAntisens($data[$i+1]);
        $array = explode("\t", $data[$i]);
        $siRNA->setSens($array[0]);
        $siRNA->setStart($array[1]);
        $siRNA->setEnthalpy($array[2]);
        $siRNA->setEntropy($array[3]);
        $siRNA->setMW($array[4]);
        $siRNA->setGC($array[5]);
        $siRNA->setTm($array[6]);
        $siRNA->setScore($array[7]);
        array_push($list_sirna, $siRNA);
    }
    ?>
    Le problème, c'est qu'en cours de script, j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fatal error:  Allowed memory size of 67108864 bytes exhausted (tried to allocate 43 bytes)
    Je ne pensais pas allouer autant de mémoire !
    Comment réparer cette erreur ?
    Merci d'avance de votre aide.

    @++

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Points : 269
    Points
    269
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     for($i=0; $i<count($data); $i+2){
    T'as une boucle infini, ton $i+2 n'evolue pas, c'est pas $i++ ?

  3. #3
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Exact Steph, j'ai abouti à la même conclusion que toi. Voici la boucle correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    for($i=0; $i<count($data); $i++){
        if($i&1){
            $siRNA2 = $list_sirna[count($list_sirna)-1];
            array_pop($list_sirna);
            $siRNA2->setAntisens($data[$i]);
            array_push($list_sirna, $siRNA2);
        }
        else{
            $siRNA = new siRNA();
            $array = explode("\t", $data[$i]);
            $siRNA->setSens($array[0]);
            $siRNA->setStart($array[1]);
            $siRNA->setEnthalpy($array[2]);
            $siRNA->setEntropy($array[3]);
            $siRNA->setMW($array[4]);
            $siRNA->setGC($array[5]);
            $siRNA->setTm($array[6]);
            $siRNA->setScore($array[7]);
            array_push($list_sirna, $siRNA);
        }
    }
    @++

  4. #4
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2003
    Messages
    235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2003
    Messages : 235
    Points : 269
    Points
    269
    Par défaut
    Ca, c'est généralement une erreur de fatigue, a force de trop programmer, on voit pas du premier coup la solution du petuit bug .

  5. #5
    Expert confirmé
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 867
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 867
    Points : 4 873
    Points
    4 873
    Par défaut
    Exact cher Steph, faut que je dorme ce week-end

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Erreurs d'allocation (plus segfault).
    Par rikoukiki dans le forum Débuter
    Réponses: 2
    Dernier message: 01/11/2009, 18h23
  2. Erreur d'allocation mémoire - GTK+
    Par Jazzero dans le forum Débuter
    Réponses: 13
    Dernier message: 13/07/2009, 18h33
  3. C++, erreur d'allocation dynamique de mémoire
    Par YuGiOhJCJ dans le forum C++
    Réponses: 8
    Dernier message: 20/02/2009, 11h51
  4. Erreur d'allocation dynamique de tableaux
    Par lclclc dans le forum Fortran
    Réponses: 1
    Dernier message: 02/04/2008, 15h10
  5. erreur d'allocation de mémoire?
    Par ulnar dans le forum C
    Réponses: 17
    Dernier message: 18/05/2007, 09h36

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo