Topic de Neguev1 :

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 ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png

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 https://image.noelshack.com/fichiers/2016/30/1469541952-risitas182.png
Mais bon je suis junior, je peux bien être formé sur le tas hein https://image.noelshack.com/fichiers/2016/30/1469541952-risitas182.png

Pourquoi certaines données sont-elles stockées dans la pile et d'autres dans le tas ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png
Faut-il géré manuellement les allocations et désallocations mémoire dans la pile ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png

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 ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png

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 https://image.noelshack.com/fichiers/2016/30/1469541952-risitas182.png
Mais bon je suis junior, je peux bien être formé sur le tas hein https://image.noelshack.com/fichiers/2016/30/1469541952-risitas182.png

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 ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png
Faut-il géré manuellement les allocations et désallocations mémoire dans la pile ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png

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 ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png
Faut-il géré manuellement les allocations et désallocations mémoire dans la pile ? https://image.noelshack.com/fichiers/2020/07/2/1581412327-une-societe-c-est-comme-une-montgolfiere.png

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 :)

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)

Ecris moi une fonction qui fait un tri en O(log log n)

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
En ligne sur JvArchive 192