J’ai un entretien demain en C++, posez vos questions
Le 10 janvier 2024 à 18:32:48 :
Le 10 janvier 2024 à 18:20:47 :
Le 10 janvier 2024 à 18:16:51 :
Peux-tu nous expliquer la différence entre la pile et le tas ?J'étais pas sûr des noms en français. Mais Pile = stack et tas = heap si c'est bien ça:
Stack : LIFO. O(1) pour ajouter/retirer/accéder à un élement. O(N) pour chercher un élément
Elements contigu dans la mémoire.Head : pas sûr... je sais que les priority_queue sont des heaps. Donc je dirais pas les mêms complexite vu qu'il faut au faire des comparaison à chaque ajout/retrait.
Et je crois que dans la mémoire ce n'est pas contigu.Je vais chercher sur google
Edit : beaucoup plus complexe niveau mémoire que je pensais. Mais yes c'est ajouté dans la mémoire un peu partout où ça peut l'être. Je vais creuser. Merci chef!
C'est très important de bien comprendre la gestion de la mémoire dans les langages système. La pile et le tas sont des notions élémentaires.
Je m'en rends compte mon niveau. Surtout que je veux faire du C++ bas niveau, et j'ai des connaissances de mémoires/threads réduites
Mais bon je suis junior, je peux bien être formé sur le tas hein
Le 10 janvier 2024 à 18:42:02 :
Le 10 janvier 2024 à 18:32:48 :
Le 10 janvier 2024 à 18:20:47 :
Le 10 janvier 2024 à 18:16:51 :
Peux-tu nous expliquer la différence entre la pile et le tas ?J'étais pas sûr des noms en français. Mais Pile = stack et tas = heap si c'est bien ça:
Stack : LIFO. O(1) pour ajouter/retirer/accéder à un élement. O(N) pour chercher un élément
Elements contigu dans la mémoire.Head : pas sûr... je sais que les priority_queue sont des heaps. Donc je dirais pas les mêms complexite vu qu'il faut au faire des comparaison à chaque ajout/retrait.
Et je crois que dans la mémoire ce n'est pas contigu.Je vais chercher sur google
Edit : beaucoup plus complexe niveau mémoire que je pensais. Mais yes c'est ajouté dans la mémoire un peu partout où ça peut l'être. Je vais creuser. Merci chef!
C'est très important de bien comprendre la gestion de la mémoire dans les langages système. La pile et le tas sont des notions élémentaires.
Je m'en rends compte mon niveau. Surtout que je veux faire du C++ bas niveau, et j'ai des connaissances de mémoires/threads réduites
Mais bon je suis junior, je peux bien être formé sur le tas hein
Franchement les threads on s'en fout si tu es junior. Mais pas contre la gestion mémoire et les pointeurs sont vraiment les trucs de base dans ce type de langage.
Le 10 janvier 2024 à 18:42:35 :
Pourquoi certaines données sont-elles stockées dans la pile et d'autres dans le tas ?
Faut-il géré manuellement les allocations et désallocations mémoire dans la pile ?
Après quelques recherches de bases sur les pile et tas:
1. Dans la pile, l'allocation mémoire se fait par block de taille connue à la compilation. Donc on mettra préfèrera des données simples, ex: type natifs int, char, etc.
Dans la stack, l'allocation est géré manuellement et la taille du prochain block est décidé run time. Donc on peut se permettre des objets plus """dynamique""", ex: un objet avec des attributs
2. Dans la pile cela est fait automatiquement par les fonctions implémentées de la pile. A chaque ajout ou retrait le block est alloué ou libéré.
=> Si j'ai bien compris la stack est la structure de données basique servant juste à stocker de manière LIFO des données simples
et la heap permet d'avoir des structures de données plus complexe, par example une linked-list.
Je vais creuser le sujet je suis pas sûr de moi. Merci une question de moi où j'aurai pu ne pas avoir le job
Le 10 janvier 2024 à 17:36:46 Joemeek a écrit :
prépare l'entretien renseigne toi bien sur l'entreprise, leurs projets, c'est souvent négligé, demande quelles seront tes missions.
Le 10 janvier 2024 à 18:55:53 Neguev1 a écrit :
Le 10 janvier 2024 à 18:42:35 :
Pourquoi certaines données sont-elles stockées dans la pile et d'autres dans le tas ?
Faut-il géré manuellement les allocations et désallocations mémoire dans la pile ?Après quelques recherches de bases sur les pile et tas:
1. Dans la pile, l'allocation mémoire se fait par block de taille connue à la compilation. Donc on mettra préfèrera des données simples, ex: type natifs int, char, etc.
Dans la stack, l'allocation est géré manuellement et la taille du prochain block est décidé run time. Donc on peut se permettre des objets plus """dynamique""", ex: un objet avec des attributs2. Dans la pile cela est fait automatiquement par les fonctions implémentées de la pile. A chaque ajout ou retrait le block est alloué ou libéré.
=> Si j'ai bien compris la stack est la structure de données basique servant juste à stocker de manière LIFO des données simples
et la heap permet d'avoir des structures de données plus complexe, par example une linked-list.Je vais creuser le sujet je suis pas sûr de moi. Merci une question de moi où j'aurai pu ne pas avoir le job
La stack c'est quand tu fais int a = 5;
Le heap c'est quand tu fais int* a = new int(5);
la stack est très limitée (quelques Mo), contrairement au heap qui se compte en Go (~la taille de la RAM)
Données du topic
- Auteur
- Neguev1
- Date de création
- 10 janvier 2024 à 17:26:23
- Nb. messages archivés
- 47
- Nb. messages JVC
- 47