CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • 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 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[C] malloc int **

akumabeelz
akumabeelz
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
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
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
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
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
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
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

Sous forums
  • Aide à l'achat Mac
  • Macintosh
  • Création de Jeux
  • Programmation
  • Création de sites web
  • Linux
  • Internet
  • Steam Deck
  • Hardware
La vidéo du moment