Articles of gestion de la

Une bonne pratique pour libérer les malloc à la fin du programme?

J’ai un programme simple qui lit un tas de parameters de fichier ini dans la mémoire allouée dynamicment (malloc), puis fait des choses dans les boucles pendant une longue période, puis se termine. Quand je lance valgrind, je constate que la mémoire à laquelle j’ai mallocé pour mes chaînes ini n’est pas libérée. D’une part, […]

Comment copier une arborescence de tétraèdre dans la mémoire d’un appareil CUDA?

Si je souhaite déplacer la structure ci-dessous, TetrahedronStruct dans la mémoire de l’appareil CUDA, comment dois-je procéder? struct TetrahedronStruct { int index; int region; TriangleFaces Faces[4]; Vertex Vertices[4]; struct TetrahedronStruct *adjTetrahedrons[4]; }; typedef struct { long double Nx, Ny, Nz; long double d; Vertex V[3]; } TriangleFaces; typedef struct { long double x, y, z; […]

Linux fournit-il une zone de mémoire garantie inaccessible au-dessous de l’extrémité inférieure de la stack?

Est-ce que Linux fournit une zone de mémoire inaccessible au-dessous de l’extrémité inférieure de la stack dont la taille minimale est garantie? Et si une telle taille minimale garantie existe, de quoi s’agit-il? Ou, en d’autres termes, quand devrais-je commencer à m’inquiéter de la façon dont alloca() me donne des pointeurs sur une mémoire valide, […]

C: Libérer correctement la mémoire d’un tableau multidimensionnel

Supposons que le code ANSI C suivant initialise un tableau multidimensionnel: int main() { int i, m = 5, n = 20; int **a = malloc(m * sizeof(int *)); //Initialize the arrays for (i = 0; i < m; i++) { a[i]=malloc(n * sizeof(int)); } //…do something with arrays //How do I free the **a […]

segment bss en c

Dans l’une des réponses à la question ” Concernant le segment bss et le segment de données sous Unix “, l’explication suivante figure sur bss: Bss est spécial: les objects .bss ne prennent pas d’espace dans le fichier d’object et, en regroupant tous les symboles qui ne sont pas spécifiquement initialisés ensemble, ils peuvent facilement […]

Confus au passage par référence

Prenons l’exemple ci-dessous où je tente de passer par référence de la manière suivante: // Function prototypes void increment(unsigned* number); int main() { unsigned* thing; increment(thing); cout << *thing; return 0; } void increment(unsigned* number) { number = (unsigned*) malloc(sizeof(unsigned)); *number = 1; } Je reçois un blocage du programme au niveau de la ligne […]

Erreur lors de l’utilisation de la mémoire – mremap_chunk: Assertion

Il semble que mon post précédent, mais la question ici est différente .. C’est la structure C du problème – typedef struct ip_esp_private { /* keep track of things privately */ u_int32_t type; u_int32_t ivlen; u_int32_t icvlen; u_int32_t keylen; /* length of “Encryption key */ u_int32_t akeylen; /*length of authn key */ u_int32_t key[0]; /* […]

Fonction Calloc Inside

En regardant cette question qui vient d’être posée: Les inconvénients des pointeurs sur des variables statiques feraient-ils quelque chose de ce genre qui serait considéré comme une mauvaise pratique, alors? char* strpart(char* ssortingng, int start, int count) { char* strtemp; int i = 0; int j = 0; int strL = strlen(ssortingng); if ( count […]

Valgrind donnant une erreur mais tout semble aller bien

Celui-ci semble être un duplicata de mon précédent post mais ce n’est pas ….. Voici Valgrind donnant l’erreur suivante: udit@udit-Dabba ~/mec $ valgrind –leak-check=full sendip -v -p ipv6 -f file.txt -6s ::1 -p esp -es 0x20 -eq 0x40 -ei z30 -eI z100 -p tcp -ts 21 -td 21 ::2 ==4331== Memcheck, a memory error detector […]

Fuite de mémoire à l’aide de JSON-C

Je suis nouveau sur JSON-C, veuillez consulter mon exemple de code et laissez-moi savoir qu’il créera une fuite de mémoire. Si oui, comment libérer un object JSON-C. struct json_object *new_obj = NULL; new_obj = json_tokener_parse(strRawJSON); new_obj = json_object_object_get(new_obj, “FUU”); if(NULL == new_obj){ SYS_OUT(“\nFUU not found in JSON”); return NO; } new_obj = json_object_object_get(new_obj, “FOO”); // […]