Maison >développement back-end >Golang >Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Go语言进阶学习
Go语言进阶学习avant
2023-07-24 15:45:17521parcourir

Pourquoi devriez-vous apprendre le langage C

Eh bien, cette année, nous sommes en 2023. D'après les différents projets de développement en cours, le langage C est en effet beaucoup utilisé Peu, à l'exception de certains domaines tels que l'embarqué, le C est rarement vu, mais pourquoi est-ce que j'entends encore xx dire que nous devons bien apprendre le langage C

D'après ma compréhension, en fait, apprendre le langage C, ce que vous apprenez ne l'est pas ? la langue, mais les choses qui se cachent derrière la langue, les conceptions qu'elle représente et l'essence qu'elle représente.


Quels avantages cela apportera-t-il si vous apprenez bien le langage C

Je crois que de nombreux débutants ont peut-être entendu un certain patron dire dans le groupe, j'ai appris xx langage en une semaine, alors toi. a commencé à travailler directement, puis vous avez dit en silence, faites semblant d'avoir 13 ans, ou peut-être que vous venez de commencer à vous battre dans le groupe.

Alors, peut-on vraiment dire qu’on peut apprendre une langue en une ou deux semaines ?

Je peux être responsable et vous dire qu'il n'y a absolument aucun problème, mais qu'il faut le construire sur des bases solides.

Et les pointeurs constituent une base particulièrement importante. Quel que soit le langage utilisé de nos jours, l'essence est l'application de pointeurs, mais elle est simplement encapsulée.

Mais ce que cela provoque, c'est que si la fondation est instable, cela posera des problèmes inexplicables et incompréhensibles, surtout pour les débutants.

Ainsi, quel que soit votre stade actuel, ceux qui n'ont pas appris le langage C doivent apprendre le C et reprendre les bases importantes qui ont été laissées derrière eux.

Alors, permettez-moi d'abord de vous donner une brève introduction.


La pile technologique requise

La pile technologique utilisée cette fois est le langage Go En théorie, il utilise le langage C, mais parce que lorsqu'on débute avec les pointeurs, Go et C L'essence est fondamentalement. la même chose, donc le langage Go, plus convivial, est utilisé.

Nous ajouterons Python plus tard, le comparerons avec Go, quelles sont les différences et verrons comment le populaire Python alloue la mémoire.

Actuellement, en lisant cet article, je recommande toujours à vos amis d'avoir certaines connaissances de base, au moins de comprendre comment définir des variables et ainsi de suite.


La relation entre le matériel du système d'exploitation

Tout d'abord, nous devons comprendre les principaux composants de l'ordinateur.

首先,简单的说,至少由 CPUCPU  内存条  硬盘  显卡 显示器  操作系统(Linux,Windowns)  

内存条

 Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

硬盘

🎜🎜  🎜🎜🎜🎜显示器🎜🎜🎜 🎜  🎜🎜🎜🎜操作系统(Linux,Windowns)🎜🎜🎜🎜等。🎜🎜🎜🎜那么这些硬件是如何互相配合的呢。🎜🎜🎜 🎜🎜🎜🎜嗯...大概是这样子的,有点丑。🎜🎜



En bref :

  1. Chaque application du système (qq, WeChat, etc.) veut laisser l'ordinateur jouer de la musique, et le moniteur affiche quelque chose, comme écrire un fichier l'accès au disque dur nécessite le consentement du système d'exploitation.

  2. Le système d'exploitation appelle le CPU pour terminer l'exécution des instructions, et le CPU lit l'application ouverte dans la clé USB. Par conséquent, pourquoi le disque dur mécanique est-il si bloqué ? maintenant l'état solide bruisse. Ceci termine le transfert des données du disque dur vers les données de la clé USB.

  3. Le CPU analyse les données d'application lues dans la clé mémoire. S'il s'agit de données traitées par le CPU, elles seront prises et calculées par lui-même. S'il s'agit de données traitées par la carte graphique, elles seront appelées. à la carte graphique pour le calcul. S'il s'agit de données sonores, elles seront calculées par la carte son, attendez.

  4. Grâce à la coordination ci-dessus, l'ensemble de l'application peut essentiellement s'exécuter. Si des données doivent être écrites sur le disque dur, le processeur peut simplement écrire les données de la clé USB sur le disque dur.

D'accord, grâce à ce qui précède, nous pouvons fondamentalement comprendre la relation de coordination entre le système d'exploitation et chaque matériel.

Laissez-moi vous dire un secret, le code que nous écrivons s'exécute essentiellement dans la clé USB. De même, les applications mentionnées ci-dessus exécutent essentiellement le code de l'application dans la clé USB.


Memory Stick

Oui, c'est ça, une clé USB.

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

De même, je peux également comprendre la structure interne de la clé USB de cette manière.

Nous pouvons comprendre les clés USB comme des maisons, juste comme ça.

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

est toujours moche...

Mais notre clé USB a coordonnées , également appelées adresse, chaque petite grille Il y a des valeurs​​​ un par un.

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Mais d'habitude, on le comprend catégoriquement, comme ça.

Les adresses (coordonnées) sont généralement exprimées en hexadécimal, et quelle que soit la valeur, c'est stupide.

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Code Brief

Jetons un coup d'œil à un code Go très court.

Déclarez une variable d'âge, attribuez-lui une valeur de 18, puis affichez-la. Comment

package main


import "fmt"


func main() {
    var age int = 18
    fmt.Println("我今年:",age,"岁")
}

est représenté dans la mémoire.

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Notre nom de variable age pointe vers 0x10010x1001地址,并且输出了0x0001adresse, et 0x0001

La valeur stockée.

Juste comme ça. Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Remarque :

Vous devez comprendre cette phrase. Le nom de la variable pointe vers l'adresse sur la clé USB. 🎜🎜🎜

上述age指向就是地址0x10010x1001

但是我们在fmt.Println("我今年:",age,"岁")

但是我们在fmt.Println("我今年:",age,"岁")打印时,我们打印的是地址里面的

同理,们在赋值,交换变量时,还是是地址里面的

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

例如:

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

🎜上述代码内存分配图。🎜🎜🎜🎜🎜

age2 demandera à nouveau une adresse pour stocker la valeur de l'âge de 18 ans.

Parfois, quelqu'un peut demander, samedi, existe-t-il une telle situation ? Ils désignent tous les deux le même souvenir en même temps. N'est-ce pas plus économe en mémoire ?

Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

Résultat : Bien sûr, nous parlerons de cette situation plus tard. Il suffit de la comprendre maintenant, étape par étape.


Conclusion

Le nom de la variable pointe vers l'adresse mémoire .

Lorsque nous attribuons une valeur, ou lorsque nous opérons des variables telles que l'impression, nous opérons sur la valeur de l'adresse .


Fin

Ce qui précède est déjà très long. Peut-être avez-vous un peu le vertige, alors cet article se termine ici.

Si vous rencontrez des problèmes de tâche pendant l'opération, n'oubliez pas de laisser un message ci-dessous et nous résoudrons le problème dans les plus brefs délais.

Je suis codeur sur Zhouba. Si vous pensez que c'est bien, n'oubliez pas de lui donner un like.

Merci d'avoir regardé.

Si vous rencontrez des problèmes pendant l'opération, n'oubliez pas de laisser un message ci-dessous et nous résoudrons le problème dans les plus brefs délais.

Dites aux autres avec le sourire que je suis meilleur aujourd'hui qu'hier et que je serai le même à l'avenir.

Si vous pensez que l'article est bon, n'oubliez pas d'aimer et de laisser un message pour nous soutenir . Merci d'avoir lu. Si vous avez des questions, veuillez laisser un message ci-dessous~

Si vous souhaitez en savoir plus sur Python, vous pouvez vous référer au site d'apprentissage : http://pdcfighting.com/, cliquez pour lire. le texte original, vous pouvez y aller directement~

---------------- --- Fin ------- ---- Recommandations pour des articles passionnants des numéros précédents : Un article avec Vous comprenez les bases de la programmation réseau en langage GoLa structure de base du langage Go (hiver)

  • Un article vous amènera à comprendre les bases de la concurrence (canal) en langage Go

  • Une brève discussion sur l'allocation de mémoire du point de vue du langage Go

    Bienvenue à tousJ'aime, Laissez un message, forward, repost, Merci à tous pour votre compagnie et votre soutien

    Si vous souhaitez rejoindre le groupe d'apprentissage Go, veuillez répondre en arrière-plan【Rejoignez le groupe

    Des milliers de rivières et de montagnes sont toujours le même amour, cliquez sur【 Je regarde】D'accord

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Déclaration:
    Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer