J’essayais de déterminer la quantité de mémoire que je pouvais utiliser dans ma machine (1 Gb de RAM 160 Gb HD Windows). J’ai lu que le maximum de mémoire que malloc peut allouer est limité à la mémoire physique (sur le tas). De plus, lorsqu’un programme dépasse la consommation de mémoire à un certain niveau, […]
Lorsque nous utilisons malloc() pour allouer de la mémoire, devrions-nous indiquer la taille qui est en puissance de deux? Ou nous donnons simplement la taille exacte dont nous avons besoin? Comme //char *ptr= malloc( 200 ); char *ptr= malloc( 256 );//instead of 200 we use 256 S’il vaut mieux donner la taille qui est au […]
Donné struct node { int a; struct node * next; }; Malloc une nouvelle structure, struct node *p = malloc(sizeof(*p)); est plus sûr que struct node *p = malloc(sizeof(struct node)); Pourquoi? Je pensais qu’ils sont les mêmes.
Je veux lire l’entrée de l’utilisateur en utilisant le programme C. Je ne veux pas utiliser le tableau comme, char names[50]; parce que si l’utilisateur donne la chaîne de longueur 10, alors les espaces restants sont perdus. Si j’utilise un pointeur de caractère comme, char *names; alors j’ai besoin d’allouer de la mémoire pour cela […]
Je sais que c’est une convention courante de transmettre la longueur des tableaux alloués dynamicment aux fonctions qui les manipulent: void initializeAndFree(int* anArray, size_t length); int main(){ size_t arrayLength = 0; scanf(“%d”, &arrayLength); int* myArray = (int*)malloc(sizeof(int)*arrayLength); initializeAndFree(myArray, arrayLength); } void initializeAndFree(int* anArray, size_t length){ int i = 0; for (i = 0; i < […]
Avec de très grandes quantités de RAM ces temps-ci, je me demandais, il est possible d’allouer un seul morceau de mémoire supérieur à 4 Go? Ou devrais-je allouer un tas de petits morceaux et gérer la commutation entre eux? Pourquoi??? Je travaille sur le traitement de certaines données XML openstreetmap et ces fichiers sont énormes. […]
Très simple question, j’ai fait le programme suivant: #include int main(int argc, char ** argv) { void * ptr; ptr = malloc(0); free(ptr); } Et cela ne va pas mal sur ma machine. Est-ce un comportement portable de stdlib malloc et gratuit, ou est-ce que je recherche des problèmes? Edit: Ce qui semble non portable […]
Firefox 3 est venu avec un nouvel allocateur: jemalloc . J’ai entendu à plusieurs endroits que ce nouvel allocateur est meilleur. Les meilleurs résultats de Google ne donnent aucune information supplémentaire et je suis intéressé par son fonctionnement.
J’ai lu plus de discussions sur le comportement de malloc lorsque vous demandez un bloc de taille zéro. Je comprends que le comportement de malloc(0) est défini par l’implémentation, et il est supposé renvoyer un pointeur nul ou un pointeur non nul auquel je ne suis pas censé accéder. (Ce qui est logique, car il […]
J’ai du mal avec le code ci-dessous avec l’erreur sur la ligne 5: erreur: conversion invalide de void* à char* J’utilise g ++ avec des blocs de code et j’ai essayé de comstackr ce fichier en tant que fichier cpp. Est-ce que ça importe? #include int main() { char *foo = malloc(1); if (!foo) { […]