Ok, merci. J'ignorais que le monde du cloud proposait ce genre de choses.
Je comprend que c'est limité à un usage particulier, orienté pour digérer les informations/traces/données négligemment laissées par les utilisateurs du service
et qu'il n'est pas possible de programmer le FPGA librement.
Pas exactement, elle accuse d'abord sa collaboratrice (dont j'ai oublié le nom).
Ensuite, elle indique qu'elle a eu des relations sexuelle avec Minsky, ce qui est nié dans le fil sur reddit.
de mémoire, je n'ai plus les sources sous la main.
Suivant les derniers développements, il semble que Minsky n'ait finalement eu aucune relation avec cette adolescente
Quels derniers développements ? le même lien qui tourne vers les commentaires sur reddit ?
La victime a été entendue en 2016 et c'est de son témoignage dont il est question, je suppose dans « reference report» .
Ce qui n'empêche pas les commentateurs sur reddit de balayer tout cela d'un revers de main sur la
base d'un témoignage d'un type qui n'était pas là, mais à qui on aurait dit que…
Lien que nombre de gens ici n'hésitent pas à faire tourner.
La règle que j'applique aujourd'hui est que je place la dernière version EOL du noyau qui précède la stable actuelle. Cela m'évite de compiler plusieurs versions mineures.
Euh, pourquoi ?
Il pourrait y avoir des apports intéressants dans une version mineure, voire des corrections de failles.
La vrai difficulté est de suivre ces modifications et de savoir lesquelles pourraient vous être utiles (selon les architectures, vo applications, les drivers …).
Et c'est valable pour d'autre OS.
Par exemple, j'ai des machines sous FreeBSD.12-Stable et je dois suivre les commits sur cette branche pour savoir si oui ou non, ça vaut le peine de prendre le risque de rebooter sur une nouvelle révision.
En fait, je prend souvent ce risque. parce que même pas peur.
( et que zfs send/zfs recv incrémental tous les jours vers une autre machine, aussi.)
Peut-être, mais c'est la valeur de result qui est importante, c'est lui la clef - et le résulat- des allocations. Dîtes vous que c'est (ou ça devrait être ) l'inverse:
Ce qui change tout. Ceci dit, je reste persuadé qu'il vaut mieux encadrer result plutôt que size pour déterminer qui est déjà alloué et qui ne l'est pas encore.
#include<stdio.h>#include<string.h>#define MAX_RESERVE_NOM 21#define MAX_NOM (MAX_RESERVE_NOM - 1)#define FAMILLE_SIZE 10structfamille{intage;charsurnom[MAX_RESERVE_NOM];charnom[MAX_RESERVE_NOM];};/* pour le confort */typedefstructfamille*familleptr;/*-----------------------*/voidchangement(familleptrm){m->age=18;/* strncpy: pour ne pas deborder */strncpy(m->surnom,"plouf6789ABCDEFGHIJKZZZZ",MAX_NOM);strncpy(m->nom,"plaf",MAX_NOM);}/*-----------------------*/intmain(void){structfamillemembre[FAMILLE_SIZE]={{10,"pif","paf"},{11,"dede","lulu"},{12,"",""},{13,"",""},{14,"",""},{15,"",""},{16,"",""},{17,"",""},{18,"",""},{19,"",""}};strncpy(membre[2].surnom,"pof",MAX_NOM);changement(&membre[3]);for(size_ti=0;i<FAMILLE_SIZE;++i){printf("Le surnom de %s, agé de %d années, est %s\n",membre[i].nom,membre[i].age,membre[i].surnom);}return0;}
Clairement: tout ce que je vous indique est valide, quoi que vous fassiez en amont.
[SNIP] Il est censé être ré-allouer
Ré-allouer, c'est appeler realloc, pas calloc. Je le répète: vos appels à calloc n'ont pas de sens:
la taille demandée est toujours 1 ( sizeof (char) ): utilisez malloc.
Vous ne vérifiez jamais que result n'est pas null donc que result se doit d'être libéré avant d'appeler calloc.
Petite astuce realloc fonctionne comme un malloc si le pointeur n'avait pas été alloué en premier lieu. Vous pouvez l'utiliser partout. (mais ça donnera l'impression que vous ne maîtrisez pas vous allocations.)
Et cela se retrouve dans plusieurs parties de votre code.
len: somme des longueurs des strings à concaténer ( ne peut pas être égal à 0 ):
C'est vous qui le dite, pas votre code:
*size=len;/* copie de la valeur de len dans size*/if(!*size)/* si size vaut 0, donc si len vaut 0 ==> if(len==0) */*result=/* et si result devait etre lib'er'e d'abord ? */calloc(len+1,sizeof(char));/* malloc (len+1), donc malloc(1) */
Si en fait, vous vouliez allouer result parce qu'il ne l'était pas ou plus, vérifiez le directement:
if(NULL==result)
Enfin:
valgrind
En fait, memcheck.
Pour avoir plus de précision sur l'origine de la fuite, utilisez --leak-check=full et consorts.
Je suis tombé sur un truc intéressant intitulé "Communication classique entre processus"
concernant une "possibilité rarement proposée par les shell".
Et, de quoi s'agit-il ?
Alors je sais que c'est un peu imbuvable question longueur,
Oui. Essayez de garder le même style. Ici, la position des {, par exemple, est aléatoire.
utilisez des goto pour la gestion d'erreur avec libération de ressources, ce sera plus lisible et vous risquerez moins d'en oublier une.
Alors mon problème, est que je n'arrive pas à libérer les variables concaténées ( d'où l'utilisation qui fonctionne dans le programme "test.c" ci-dessus ) lorsqu'il s'agit de simples caractères au niveau de l'appel à "process_datas_init" dans "process_exec".
Préférez strncat et strncpy qui vous éviterons des ennuis, d'autant que vous recalculez la longueur juste avant.
Je sens un problème dans process_datas_internal.
Je suppose que result a été alloué ailleurs et passé en paramètre. Dans ce cas, à quoi rime le calloc ? Il provoque une nouvelle allocation de result sans que l'ancien ne soit libéré et n'a pas de sens avec une taille de 1 (sizeof(char)) . Ce n'est pas plutôt un realloc que vous vouliez faire ?
Au passage, plutôt que de faire des if dans les for sur la variable de loop. Traitez les séparément:
Ce qui est dommage, c'est que ces deux architectures pourraient se faire concurrence.
D'autant que sous linux, le PowerPC est déjà bien pris en charge.
On peut imaginer qu'il suffirait de ré-activer openfirmware pour obtenir une abstraction matérielle qui tiennent la route.
Ainsi, linux pourrait fournir (enfin) des noyaux plus génériques pour des SOC basés sur cette architecture.
D'autant qu'il me semble que ceux-ci n'étaient pas allergique au bus PCI…
[^] # Re: Azure et FPGA
Posté par David Marec . En réponse au journal Tristan Nitot devient directeur général de Qwant. Évalué à 4.
Ok, merci. J'ignorais que le monde du cloud proposait ce genre de choses.
Je comprend que c'est limité à un usage particulier, orienté pour digérer les informations/traces/données négligemment laissées par les utilisateurs du service
et qu'il n'est pas possible de programmer le FPGA librement.
# Azure et FPGA
Posté par David Marec . En réponse au journal Tristan Nitot devient directeur général de Qwant. Évalué à 6.
Je ne sait pas trop de quoi il s'agit en fait, j'ai du passer à coté de l'« avalanche ».
Du coup, en fouillant un peu, je suis tombé sur :
En particulier:
J'ai du mal à croire que le moteur de recherche ait du code dans des FPGA, qui seraient de plus fournis par Azure.
De quoi s'agit-il ? Que signifie vraiment ce « calculs de type FPGA » ?
[^] # Re: Ça attaque sec
Posté par David Marec . En réponse au journal Microsoft ouvre sa bibliothèque standard C++. Évalué à 3.
Ah bon. J'ai toujours cru qu'il n'utilisait que CLang, c'est à dire uniquement le language front-end.
S'il ne s'agit bien que du front-end, l’intérêt d'avoir les modification est réduit.
[^] # Re: "on prenait les loups pour des chiens"
Posté par David Marec . En réponse au journal Richard Stallman démissionne. Évalué à 2.
Pas exactement, elle accuse d'abord sa collaboratrice (dont j'ai oublié le nom).
Ensuite, elle indique qu'elle a eu des relations sexuelle avec Minsky, ce qui est nié dans le fil sur reddit.
de mémoire, je n'ai plus les sources sous la main.
[^] # Re: "on prenait les loups pour des chiens"
Posté par David Marec . En réponse au journal Richard Stallman démissionne. Évalué à 2.
Quels derniers développements ? le même lien qui tourne vers les commentaires sur reddit ?
La victime a été entendue en 2016 et c'est de son témoignage dont il est question, je suppose dans « reference report» .
Ce qui n'empêche pas les commentateurs sur reddit de balayer tout cela d'un revers de main sur la
base d'un témoignage d'un type qui n'était pas là, mais à qui on aurait dit que…
Lien que nombre de gens ici n'hésitent pas à faire tourner.
[^] # Re: Article du Monde
Posté par David Marec . En réponse au journal Richard Stallman démissionne. Évalué à 7.
Ben, c'est pour ça qu'on lit « Le Monde » , d'habitude.
[^] # Re: Sscandales
Posté par David Marec . En réponse au journal Richard Stallman démissionne. Évalué à 1.
Celle de 2016.
Epstein était vivant, lors de la déposition de la victime.
[^] # Re: Convention
Posté par David Marec . En réponse au message langage C : pourquoi on ne peut pas allouer la taille d'un tableau pendant l'exécution du programme?. Évalué à -1.
Ou pas …
Sur les systèmes les plus utilisés, dont Linux, la libération sera effectuée de toute façon en sortie de programme.
Tant que l'allocation est contrôlée, la libération est inutile.
[^] # Re: À cause des accès aligné par les instructions en asm
Posté par David Marec . En réponse au message probleme de compréhension sur l'alignement.. Évalué à 6.
Précisez
-fverbose-asm
à GCC.[^] # Re: C99: Variable Length Array
Posté par David Marec . En réponse au message langage C : pourquoi on ne peut pas allouer la taille d'un tableau pendant l'exécution du programme?. Évalué à 2.
Pour être plus précis, il ne s'agit pas d'un programme, mais d'une option de GCC :
Wvla
.- qui existe aussi pour CLang.-
[^] # Re: Convention
Posté par David Marec . En réponse au message langage C : pourquoi on ne peut pas allouer la taille d'un tableau pendant l'exécution du programme?. Évalué à 4.
Ça devrait fonctionner comme ça.
J'aurais casé un
calloc
pour que ça fasse encore plus tableau, par contre.[^] # Re: Tableau statique
Posté par David Marec . En réponse au message langage C : pourquoi on ne peut pas allouer la taille d'un tableau pendant l'exécution du programme?. Évalué à 3.
Il ne s'agit pas seulement du compilateur, mais de tout l'environnement, la toolchain.
On ne peut pas compiler le noyau linux ou un module en C11 par exemple, même avec GCC8.
Et n'essayez pas d'introduire une déclaration de variables dans vos boucles, vous allez vous faire engueuler par Linus.
[^] # Re: ... ma distribution est en fait mon OS
Posté par David Marec . En réponse au sondage La dernière fois que j’ai compilé un noyau Linux, c’était parce que…. Évalué à 4. Dernière modification le 11 septembre 2019 à 15:39.
Euh, pourquoi ?
Il pourrait y avoir des apports intéressants dans une version mineure, voire des corrections de failles.
La vrai difficulté est de suivre ces modifications et de savoir lesquelles pourraient vous être utiles (selon les architectures, vo applications, les drivers …).
Et c'est valable pour d'autre OS.
Par exemple, j'ai des machines sous FreeBSD.12-Stable et je dois suivre les commits sur cette branche pour savoir si oui ou non, ça vaut le peine de prendre le risque de rebooter sur une nouvelle révision.
En fait, je prend souvent ce risque. parce que même pas peur.
( et que zfs send/zfs recv incrémental tous les jours vers une autre machine, aussi.)
# … C'était mon boulot
Posté par David Marec . En réponse au sondage La dernière fois que j’ai compilé un noyau Linux, c’était parce que…. Évalué à 5. Dernière modification le 10 septembre 2019 à 21:22.
Sinon, je (re)compile du FreeBSD dans les trois à quatre fois par semaine.
De fait, je, c'est beaucoup dire: je confie cette tâche à des scripts Makefile qui, in fine, demandent à clang d'effectuer le gros du boulot.
[^] # Re: Bien fait!
Posté par David Marec . En réponse au journal [HS][Nécrologie] Ariane, du Club Dorothée, est décédée/bronsonisée à 61 ans. Évalué à 10. Dernière modification le 05 septembre 2019 à 22:33.
Bof,le vrai rock'n'roll, c'était Téléchat.
La seule émission pour enfants qui faisait peur aux mômes.
Ailleurs aussi, Topor a fait du vrai rock'n'roll.
[^] # Re: Reallocation sans free ?
Posté par David Marec . En réponse au message ma j'galère sur un simple free sur un string. Évalué à 3.
Peut-être, mais c'est la valeur de
result
qui est importante, c'est lui la clef - et le résulat- des allocations. Dîtes vous que c'est (ou ça devrait être ) l'inverse:result
estNULL
alorssize
vaut0
.Et non !
si result est NULL:
Et, je le répète:
sizeof(char)
vaut1
, quoiqu'il arrive. C'est le même la seule taille de type qui soit garantie.calloc
maismalloc
.ptr=realloc(NULL,size)
est équivalent àptr=malloc(size)
Man realloc:
[^] # Re: Reallocation sans free ?
Posté par David Marec . En réponse au message ma j'galère sur un simple free sur un string. Évalué à 2.
qui doit être équivalent à ces seules lignes:
Ce qui change tout. Ceci dit, je reste persuadé qu'il vaut mieux encadrer
result
plutôt quesize
pour déterminer qui est déjà alloué et qui ne l'est pas encore.moins il a de branches, mieux se porte le code.
# pointer sur un membre du tableau
Posté par David Marec . En réponse au message tableau,structure,pointeur.. Évalué à 5.
Il suffit de pointer sur un membre du tableau:
«membre», avec un «m» avant le «b»
[^] # Re: Reallocation sans free ?
Posté par David Marec . En réponse au message ma j'galère sur un simple free sur un string. Évalué à 3.
Faites mieux: vérifiez vous même, à l'aide d' assertion.
Par exemple, avant d'allouer:
ou avant d'affirmer:
Dans un premier temps, mettez vos sources à disposition en téléchargement, de préférence avec un système de gestion de version au dessus.
[^] # Re: Reallocation sans free ?
Posté par David Marec . En réponse au message ma j'galère sur un simple free sur un string. Évalué à 2.
Clairement: tout ce que je vous indique est valide, quoi que vous fassiez en amont.
Ré-allouer, c'est appeler
realloc
, pascalloc
. Je le répète: vos appels àcalloc
n'ont pas de sens:1
(sizeof (char)
): utilisezmalloc
.result
n'est pasnull
donc queresult
se doit d'être libéré avant d'appelercalloc
.realloc
fonctionne comme un malloc si le pointeur n'avait pas été alloué en premier lieu. Vous pouvez l'utiliser partout. (mais ça donnera l'impression que vous ne maîtrisez pas vous allocations.)Et cela se retrouve dans plusieurs parties de votre code.
C'est vous qui le dite, pas votre code:
Si en fait, vous vouliez allouer
result
parce qu'il ne l'était pas ou plus, vérifiez le directement:Enfin:
En fait, memcheck.
Pour avoir plus de précision sur l'origine de la fuite, utilisez
--leak-check=full
et consorts.[^] # Re: Les années 90
Posté par David Marec . En réponse au journal Le libre a perdu. Évalué à 1.
https://www.youtube.com/watch?v=bZW5CJ8OWyQ
»La mer est dangereuse, même lorsqu'il n'y a pas d'eau d'dans
»quand on creuse la baie du Mont St-Michel, on trouve plein de chapeaux de boy-scouts.
[^] # Re: Reallocation sans free ?
Posté par David Marec . En réponse au message ma j'galère sur un simple free sur un string. Évalué à 3.
Je vois toujours un
calloc
qui ferait office demalloc
dans ce code, tout en négligeant de libérer le pointeur précédent au préalable.calloc
avec une taille d’élément à1
, soit la taille d'unchar
, c'est unmalloc
.Et il existait (existe?) d'autres
calloc
douteux que celui de cette fonction.Dans cette branche,
len
vaut0
quoi qu'il arrive non ?Donc, c'est équivalent à
malloc(1)
?# Reallocation sans free ?
Posté par David Marec . En réponse au message ma j'galère sur un simple free sur un string. Évalué à 7. Dernière modification le 28 août 2019 à 23:00.
Et, de quoi s'agit-il ?
Oui. Essayez de garder le même style. Ici, la position des
{
, par exemple, est aléatoire.utilisez des
goto
pour la gestion d'erreur avec libération de ressources, ce sera plus lisible et vous risquerez moins d'en oublier une.Préférez
strncat
etstrncpy
qui vous éviterons des ennuis, d'autant que vous recalculez la longueur juste avant.Je sens un problème dans
process_datas_internal
.Je suppose que
result
a été alloué ailleurs et passé en paramètre. Dans ce cas, à quoi rime lecalloc
? Il provoque une nouvelle allocation deresult
sans que l'ancien ne soit libéré et n'a pas de sens avec une taille de 1 (sizeof(char)
) . Ce n'est pas plutôt un realloc que vous vouliez faire ?Au passage, plutôt que de faire des
if
dans lesfor
sur la variable de loop. Traitez les séparément:Pourquoi passer
size
par référence alors que vous ne l'utilisez que par variable ?[^] # Re: Excellent nouvelle
Posté par David Marec . En réponse au lien Le jeu d'instructions de la famille de processeurs POWER passe en Open Source. Évalué à 2.
Itou.
Ce qui est dommage, c'est que ces deux architectures pourraient se faire concurrence.
D'autant que sous linux, le PowerPC est déjà bien pris en charge.
On peut imaginer qu'il suffirait de ré-activer openfirmware pour obtenir une abstraction matérielle qui tiennent la route.
Ainsi, linux pourrait fournir (enfin) des noyaux plus génériques pour des SOC basés sur cette architecture.
D'autant qu'il me semble que ceux-ci n'étaient pas allergique au bus PCI…
[^] # Re: Passer en Open Source que quand plus "bankable"?
Posté par David Marec . En réponse au lien Le jeu d'instructions de la famille de processeurs POWER passe en Open Source. Évalué à 2.
Dans le monde des SOC et de l'embarqué ? Si cette architecture ne faisaient pas le poids face à ARM, son ouverture peut renverser la tendance.
D'autant qu'il existe une fondation pour le soutenir.
D'ailleurs, l'annonce initiale vient de là:
https://openpowerfoundation.org/the-next-step-in-the-openpower-foundation-journey/
Oui, comme quasiment tous les supercomputer, quelque soit l'architecture du «cœur», non ?