CONNEXION
  • RetourJeux
    • Tests
    • Soluces
    • Previews
    • Sorties
    • Hit Parade
    • Les + attendus
    • Tous les Jeux
  • RetourActu
    • Culture Geek
    • Astuces
    • Réalité Virtuelle
    • Rétrogaming
    • Toutes les actus
  • RetourHigh-Tech
    • Actus JVTECH
    • Bons plans
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTECH
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch
    • Xbox Series
    • Overwatch 2
    • FUT 23
    • League of Legends
    • Genshin Impact
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • PS4
  • One
  • Switch
  • Wii U
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Etoile Abonnement RSS

Sujet : [C] malloc int **

News culture
La Planète des Singes : Le Nouveau Royaume - la révolution simienne est en marche !
DébutPage précedente
1
Page suivantePage suivante
akumabeelz akumabeelz
MP
Niveau 10
22 octobre 2014 à 16:15:57

BOnjour,

j'ai une question par rapport au malloc , si je malloc un int **

pour mon tableau de 10x10, donc un malloc(sizeof(int*) * 100);

et que je n'utilise qu'une partie de la memoire alloué par

exemple je m'arrete a la case 50 et je fais tab[50] == NULL

pour lui dire la fin de mon tableau donc je n'utilise que 50

case sur 100

est ce que le reste sera free automatiquement ? je sais pas

comment vider le reste, est ce que sa peux poser des problèmes ? d'alloué de l'espace mémoire pour rien

Paulop Paulop
MP
Niveau 12
22 octobre 2014 à 16:24:18

http://www.eskimo.com/~scs/cclass/int/sx9b.html

Pour allouer et libérer dynamiquement un tableau dimensionnel.

Tu dois jouer dessallouer ce qui a été alloué. Donc non mettre une case a NULL ne changera rien.

Quand tu alloues ton tableau tu demande un bout de mémoire pour pouvoir y caller ton tableau, et on te retourne un pointeur vers le début de la zone en mémoire.
Si tu en utilises 10% c'est ton problème, mais la zone est toujours réservé.

akumabeelz akumabeelz
MP
Niveau 10
22 octobre 2014 à 16:37:57

donc ce que je peux faire c'est de free le reste?

A partir de 50 je fais

tab[i] = NULL // i = 50 a ce moment la
i = i + 1

while (i != 100) // while(tab[i] != NULL)
{
free(tab[i]);
i++;
} c'est possible de faire comme sa?

FortCommeMeric FortCommeMeric
MP
Niveau 10
22 octobre 2014 à 17:37:42

Tout l'intêret de l'allocation dynamique c'est d'alouer juste ce dont tu as besoin...

Pourquoi tu fais pas malloc(sizeof(int*) * 50); ?

Ou encore mieux int * tab[50];

akumabeelz akumabeelz
MP
Niveau 10
22 octobre 2014 à 18:37:25

je fais un tableau d'int ** pour stocker chaque coordonnées en x et y de la cellule de mon labyrinthe visité

donc si j'ai un labyrinthe de 10x10 j'aurai un tableau d'int de

10x10, mais ce tableau va contenir seulement le chemin du

labyrinthe,

par exemple j'ai une grille de 3x3, donc j'alloue mon tableau d'int de 9,

lorsque je parcour ma grille, je rajoute les coordonnées x et y de ma cellule ou de ma case,

je commence en 1,1 si j'arrive en 1,3, dans mon tableau d'int il y aura : (x,y)

tab[0][0] = 1 //(x)
tab[0][1] = 1 //(y)

tab[1][0] = 1;
tab[1][1] = 2;

tab[2][0] = 1;
tab[2][1] = 3;

ensuite si je n'ai plus d'options (droite, haut, bas, gauche)

je vais reprendre les coordonées d'avant pour check si il y a une solution,
si il y a une solution, je vais remplacer tab[2] par les nouvelles coordonnées ainsi de suite

ou sinon je retourne encore en arriere dans mon tableau pour récuperer les anciennes coordonnés,

je ne sais pas combien de cases j'aurai besoin exactement pour le chemin du labyrinthe du coup je malloc la taille max

akumabeelz akumabeelz
MP
Niveau 10
22 octobre 2014 à 18:39:52

http://fr.wikipedia.org/wiki/Mod%C3%A9lisation_math%C3%A9matique_d'un_labyrinthe#mediaviewer/File:Yl_maze_ani_algo2.gif

je fais sa exactement et a chaque cellule je recupere les coordonnées, lorsque je me trouve dans un cu de sac (lorsqu'il n'y a aucune option)

je remplace les coordonnées actuelle par les nouvelles dans le tableau

akumabeelz akumabeelz
MP
Niveau 10
22 octobre 2014 à 18:55:28

je ne met pas en dur car sa va me servir pour faire un jeu sur iphone et le joueur pourra choisir son niveau de difficulté et je le gere en fonction de sa

DébutPage précedente
1
Page suivantePage suivante
Répondre
Prévisu
?
Victime de harcèlement en ligne : comment réagir ?
Infos 0 connecté(s)

Gestion du forum

Modérateurs : godrik, LGV
Contacter les modérateurs - Règles du forum

Sujets à ne pas manquer

La vidéo du moment