Existe-t-il une implémentation de tableau dynamic dans glibc ou l’une des bibliothèques standard Linux pour C? Je veux pouvoir append à une liste sans me soucier de sa taille. Je sais que std :: vector existe pour C ++, mais j’ai besoin de l’équivalent C.
Considérons un algorithme pour tester la probabilité qu’un certain nombre soit choisi dans un ensemble de N nombres uniques après un nombre spécifique d’essais (par exemple, avec N = 2, quelle est la probabilité à la roulette (sans 0) que X ait besoin Noir pour gagner?). La dissortingbution correcte pour cela est pow (1-1 / […]
J’essaie d’accéder au contenu de la section .eh_frame d’un programme en cours d’exécution depuis celui-ci (plus précisément, le programme est le kernel Linux 2.6.34.8). Le .eh_frame contient des données utiles utilisées pour la gestion des exceptions et j’aimerais les utiliser en interne à partir du code du kernel. La section est déjà écrite par gcc […]
Le test est sur Ubuntu 12.04, 32 bits, avec gcc 4.6.3. En gros, je fais quelques manipulations binarys sur les binarys ELF et je dois maintenant assembler un programme d’assemblage et garantir que les symboles libc sont chargés sur une adresse prédéfinie. Laissez-moi élaborer dans un exemple simple. Supposons que, dans le code d’origine, les […]
Est-ce que quelqu’un sait pourquoi le type d’argument de putchar() , fputc() et putc() n’est pas un caractère, mais le type d’argument de putwchar() , fputwc() et putwc() est wchar_t ? Voir aussi ceci et cela .
J’utilise getpwnam_r pour gérer les connexions client dans mes programmes. Malheureusement, il semble allouer un tampon qu’il ne libère jamais. La sortie valgrind pertinente: ==15774== 536 (104 direct, 432 indirect) bytes in 2 blocks are definitely lost in loss record 1 of 3 ==15774== at 0x4C24CFE: malloc (in /usr/lib64/valgrind/amd64-linux/vgpreload_memcheck.so) ==15774== by 0x5143B5A: nss_parse_service_list (in /lib64/libc-2.10.1.so) […]
Quelqu’un peut-il m’aider à comprendre ce message d’erreur? *** glibc detected *** ./kprank_new3_norm: munmap_chunk(): invalid pointer: 0x00000000096912d0 *** ======= Backtrace: ========= /lib64/libc.so.6(cfree+0x1b6)[0x3df6e75a36] ./kprank_new3_norm[0x409277] ./kprank_new3_norm[0x4092a9] ./kprank_new3_norm[0x4092ea] ./kprank_new3_norm[0x40941f] ./kprank_new3_norm[0x40943b] ./kprank_new3_norm[0x40945f] ./kprank_new3_norm[0x409628] ./kprank_new3_norm[0x4096a7] ./kprank_new3_norm[0x40968d] ./kprank_new3_norm[0x409750] ./kprank_new3_norm[0x4097a5] ./kprank_new3_norm[0x404846] /lib64/libc.so.6(__libc_start_main+0xf4)[0x3df6e1d974] ./kprank_new3_norm(__gxx_personality_v0+0x99)[0x4017f9] ======= Memory map: ======== 00400000-00412000 r-xp 00000000 08:21 25795429 /home/rkrish/abhik/kprank/kprank_new3_norm 00611000-00612000 rw-p 00011000 08:21 25795429 /home/rkrish/abhik/kprank/kprank_new3_norm 09691000-096d3000 rw-p 09691000 […]
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 […]
J’ai compilé un programme C sous Ubuntu 12.04, créé un paquet Debian et souhaité l’installer sur un serveur exécutant Debian Lenny. La dernière fois que j’ai fait cela (il y a environ deux mois) cela a fonctionné: je pouvais installer le paquet et exécuter le binary. Mais maintenant je reçois le message d’erreur suivant: (binary’s […]
Je suis curieux de savoir comment epoll_wait () reçoit l’événement selon lequel un socket enregistré (avec epoll_ctl ()) est prêt pour la lecture / écriture. Je crois que glibc s’en occupe comme par magie. Ensuite, existe-t-il un document décrivant comment les événements suivants peuvent être déclenchés pour un socket? EPOLLPRI EPOLLRDNORM EPOLLRDBAND EPOLLWRNORM EPOLLWRBAND EPOLLMSG […]