Articles of gestion de la mémoire

allouer la mémoire de l’espace utilisateur à partir du kernel

J’essaie d’appeler sys_readlink(const char __user *path, char __user *buf, int bufsiz) directement, mais obtenez le code d’erreur EFAULT. Cette erreur apparaît car buf pointe vers la mémoire depuis l’espace kernel. Alors, est-il possible d’allouer de la mémoire de l’espace utilisateur à partir du kernel? kmalloc(size, GFP_USER) est similaire à kmalloc(size, GFP_KERNEL) et renvoie un pointeur […]

C: pointeur sur un tableau de pointeurs vers des structures (problèmes d’allocation / désallocation)

Je retourne à C pour quelque chose, mais j’ai du mal à me souvenir du fonctionnement de cette gestion de la mémoire. J’aimerais avoir un pointeur sur un tableau de pointeurs sur des structures. Dis que j’ai: struct Test { int data; }; Puis le tableau: struct Test **array1; Est-ce correct? Mon problème travaille avec […]

Allocation de mémoire pour un tableau 2D en C

J’écris un programme C multithread et j’ai une erreur. J’ai un tableau de array worker_table 2D array worker_table déclaré globalement comme: int **worker_table; Et alloué en principal comme suit: worker_table = (int**) calloc(number_of_workers*2,(sizeof(int))); C’est la fonction worker: void *Worker(void *worker_id) { my_id = (int)worker_id; //id of the worker printf(“Line 231\n”); printf(“My id is %d\n”,my_id); my_customer […]

Problème d’allocation de mémoire dans HashTable

S’il vous plaît ne fermez pas cette en disant une question en double . J’ai apporté un changement important afin de ne pas dérouter les gens, j’ai soumis à nouveau ces codes beaucoup plus clairs. S’il vous plaît, aidez-moi à résoudre ce problème d’allocation de mémoire. Je travaille sur une table de hachage et voici […]

Comment profiler l’utilisation de la mémoire d’un programme C

Je dois déterminer quelle partie d’un programme Linux que j’exécute utilise combien de mémoire (en pourcentage ou absolue). Je dois créer un profil de plusieurs de ces programmes afin d’identifier les plus gros consommateurs de mémoire de mon code et de voir si je peux les optimiser pour en utiliser moins. J’en ai besoin sur […]

Atsortingbuer de la mémoire à un tableau 3D à l’aide d’un sortingple pointeur

Je dois atsortingbuer de la mémoire à un tableau 3D à l’aide d’un sortingple pointeur. #include int main() { int m=10,n=20,p=30; char ***z; z = (char***) malloc(sizeof(char**)*m*n*p); return 0; } Est-ce que c’est correct de faire ça? (Je pense que ce que je fais est incorrect.)

Force free () à renvoyer la mémoire de malloc à l’OS

On dirait que même après avoir libéré toute la mémoire d’un processus Linux alloué par malloc (), la mémoire est toujours réservée au processus et n’est pas renvoyée au système d’exploitation. L’exécution de l’outil Valgrind Massif par défaut ne révèle aucune fuite. Exécuter valgrind avec –pages-as-heap = yes révèle ceci: -> 13,77% (7 655 424 […]

Allocation dynamic de mémoire pour tableau 3D

Doublons possibles: Malloc un tableau sortingdimensionnel en C? allocation / désallocation dynamic de tableaux 2D et 3D Comment puis-je allouer des tableaux 3D à l’aide de malloc?

Utilisation de realloc pour réduire la mémoire allouée

Question simple sur la fonction realloc dans C: Si j’utilise realloc pour réduire le bloc de mémoire pointé par un pointeur, la mémoire “supplémentaire” est-elle libérée? Ou faut-il le libérer manuellement? Par exemple, si je le fais int *myPointer = malloc(100*sizeof(int)); myPointer = realloc(myPointer,50*sizeof(int)); free(myPointer); Vais-je avoir une fuite de mémoire?

Comment stockez-vous un nombre entier arbitrairement grand en mémoire?

Je dois stocker une valeur entière supérieure à la valeur maximale pour le type de données long. Comment pourrais-je stocker et manipuler cette valeur en mémoire? Veuillez l’illustrer par un exemple, si possible.