> Oui, cependant le débutant se doit de se faire un tableau dynamique avec
du
malloc, il se doit de faire des applications typiques comme celle ci, il
se
doit d'expérimenter les concept de base de la programmation. Parce que le
débutant a du temps par définition ! temps qu'il doit utiliser pour
comprendre les mécanismes de bases de l'informatique, ainsi aura-t-il une
chance de devenir un programmeur...
> Oui, cependant le débutant se doit de se faire un tableau dynamique avec
du
malloc, il se doit de faire des applications typiques comme celle ci, il
se
doit d'expérimenter les concept de base de la programmation. Parce que le
débutant a du temps par définition ! temps qu'il doit utiliser pour
comprendre les mécanismes de bases de l'informatique, ainsi aura-t-il une
chance de devenir un programmeur...
> Oui, cependant le débutant se doit de se faire un tableau dynamique avec
du
malloc, il se doit de faire des applications typiques comme celle ci, il
se
doit d'expérimenter les concept de base de la programmation. Parce que le
débutant a du temps par définition ! temps qu'il doit utiliser pour
comprendre les mécanismes de bases de l'informatique, ainsi aura-t-il une
chance de devenir un programmeur...
Oui, effectivement. Mon réflexe basique étant "Windows" puisque je crois
que
le langage principal de programmation y est le C++. Mais tu as entièrement
raison, je vais aller sur ce forum.
Merci.
Pierre.
Oui, effectivement. Mon réflexe basique étant "Windows" puisque je crois
que
le langage principal de programmation y est le C++. Mais tu as entièrement
raison, je vais aller sur ce forum.
Merci.
Pierre.
Oui, effectivement. Mon réflexe basique étant "Windows" puisque je crois
que
le langage principal de programmation y est le C++. Mais tu as entièrement
raison, je vais aller sur ce forum.
Merci.
Pierre.
"Alexandre" wrote in message
news:4197b504$0$30305$bonjour,C'est une confusion classique chez les "pseudo-programmeur" C++, je le
répète donc, le NEW en C++ sert à hinstancier, créer et déclencher
l'appeldu constructeur d'un object de type C++. le Malloc est une fonction qui
permet d'allouer de la mémoire. Donc, il n'y a pas grand rapport avec
cesdeux fonctions, ou plutot fonctionnalités, car "malloc" est une fonction
d'un librairie, "new" est un mot réservé du langage...
merci pour le pseudo-programmeur, un jour je te dirais où je travailles.
si vous voulez, mais sachez que cela ne m'intéresse pas beaucoup. l'emploi
du terme "pseudo-programmeur" était surtout un moyen pour moi d'évaluer
votre taux d'humour...new sert effectivement à instancier (pas de h ici, ne pas confondre avec
unehInstance) un objet, mais également à allouer de la mémoire. Donc comme
malloc, mais en mieux (par ex déclenchement d'une exception en cas de pb).
Alors non ! il faut que je le répète encore et encore, (les "pseudo
programmeurs" sont sourds , c'est connu) ... new ne sert pas à allouer de la
mémoire, la mémoire c'est un composant système gérer par le système, pour
allouer de la mémoire il faut donc utiliser les services systèmes, sous
windows, ca peut se faire avec les API HeapAlloc, GlobalAlloc etc.. ou bien
à l'aide de la fonction généric d'un librairie "C/C++" ; MALLOC qui elle,
est définit comme une fonction d'allocation mémoire et qui d'ailleurs fait
appel au système pour faire son allocation... New sert à créer un objet ++,
si cela engendre une allocation mémoire , c'est fortuit et généralement non
désiré, l'utilisateur C++ ne comprend généralement pas qu'un ordinateur ne
puisse plus créer d'objet par manque de mémoire. ca lui parait sur-réaliste
! ce qui est vrai, car encore une fois, le new n'est pas là pour allouer de
la mémoire. :-)
"Alexandre" <alex.g@netcourrier.com> wrote in message
news:4197b504$0$30305$626a14ce@news.free.fr...
bonjour,
C'est une confusion classique chez les "pseudo-programmeur" C++, je le
répète donc, le NEW en C++ sert à hinstancier, créer et déclencher
l'appel
du constructeur d'un object de type C++. le Malloc est une fonction qui
permet d'allouer de la mémoire. Donc, il n'y a pas grand rapport avec
ces
deux fonctions, ou plutot fonctionnalités, car "malloc" est une fonction
d'un librairie, "new" est un mot réservé du langage...
merci pour le pseudo-programmeur, un jour je te dirais où je travailles.
si vous voulez, mais sachez que cela ne m'intéresse pas beaucoup. l'emploi
du terme "pseudo-programmeur" était surtout un moyen pour moi d'évaluer
votre taux d'humour...
new sert effectivement à instancier (pas de h ici, ne pas confondre avec
une
hInstance) un objet, mais également à allouer de la mémoire. Donc comme
malloc, mais en mieux (par ex déclenchement d'une exception en cas de pb).
Alors non ! il faut que je le répète encore et encore, (les "pseudo
programmeurs" sont sourds , c'est connu) ... new ne sert pas à allouer de la
mémoire, la mémoire c'est un composant système gérer par le système, pour
allouer de la mémoire il faut donc utiliser les services systèmes, sous
windows, ca peut se faire avec les API HeapAlloc, GlobalAlloc etc.. ou bien
à l'aide de la fonction généric d'un librairie "C/C++" ; MALLOC qui elle,
est définit comme une fonction d'allocation mémoire et qui d'ailleurs fait
appel au système pour faire son allocation... New sert à créer un objet ++,
si cela engendre une allocation mémoire , c'est fortuit et généralement non
désiré, l'utilisateur C++ ne comprend généralement pas qu'un ordinateur ne
puisse plus créer d'objet par manque de mémoire. ca lui parait sur-réaliste
! ce qui est vrai, car encore une fois, le new n'est pas là pour allouer de
la mémoire. :-)
"Alexandre" wrote in message
news:4197b504$0$30305$bonjour,C'est une confusion classique chez les "pseudo-programmeur" C++, je le
répète donc, le NEW en C++ sert à hinstancier, créer et déclencher
l'appeldu constructeur d'un object de type C++. le Malloc est une fonction qui
permet d'allouer de la mémoire. Donc, il n'y a pas grand rapport avec
cesdeux fonctions, ou plutot fonctionnalités, car "malloc" est une fonction
d'un librairie, "new" est un mot réservé du langage...
merci pour le pseudo-programmeur, un jour je te dirais où je travailles.
si vous voulez, mais sachez que cela ne m'intéresse pas beaucoup. l'emploi
du terme "pseudo-programmeur" était surtout un moyen pour moi d'évaluer
votre taux d'humour...new sert effectivement à instancier (pas de h ici, ne pas confondre avec
unehInstance) un objet, mais également à allouer de la mémoire. Donc comme
malloc, mais en mieux (par ex déclenchement d'une exception en cas de pb).
Alors non ! il faut que je le répète encore et encore, (les "pseudo
programmeurs" sont sourds , c'est connu) ... new ne sert pas à allouer de la
mémoire, la mémoire c'est un composant système gérer par le système, pour
allouer de la mémoire il faut donc utiliser les services systèmes, sous
windows, ca peut se faire avec les API HeapAlloc, GlobalAlloc etc.. ou bien
à l'aide de la fonction généric d'un librairie "C/C++" ; MALLOC qui elle,
est définit comme une fonction d'allocation mémoire et qui d'ailleurs fait
appel au système pour faire son allocation... New sert à créer un objet ++,
si cela engendre une allocation mémoire , c'est fortuit et généralement non
désiré, l'utilisateur C++ ne comprend généralement pas qu'un ordinateur ne
puisse plus créer d'objet par manque de mémoire. ca lui parait sur-réaliste
! ce qui est vrai, car encore une fois, le new n'est pas là pour allouer de
la mémoire. :-)
Vincent Burel wrote:
J'essaie de comprendre ton vocabulaire et la distinction que tu essaie
de faire. Quand tu as le code suivant :
class C{/*...*/};
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
mémoire, la création de l'objet étant réalisée par le new de la ligne 2 ?
Et pour toi, remplacer la ligne 1 par
char *p = (char*) malloc(sizeof(C));
Changerait son sens, puis dans un cas on a une new expression qui
appelle la fonction new de la bibliothèque, alors que dans le second, on
appelle une fonction d'allocation ?
Vincent Burel wrote:
J'essaie de comprendre ton vocabulaire et la distinction que tu essaie
de faire. Quand tu as le code suivant :
class C{/*...*/};
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
mémoire, la création de l'objet étant réalisée par le new de la ligne 2 ?
Et pour toi, remplacer la ligne 1 par
char *p = (char*) malloc(sizeof(C));
Changerait son sens, puis dans un cas on a une new expression qui
appelle la fonction new de la bibliothèque, alors que dans le second, on
appelle une fonction d'allocation ?
Vincent Burel wrote:
J'essaie de comprendre ton vocabulaire et la distinction que tu essaie
de faire. Quand tu as le code suivant :
class C{/*...*/};
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
mémoire, la création de l'objet étant réalisée par le new de la ligne 2 ?
Et pour toi, remplacer la ligne 1 par
char *p = (char*) malloc(sizeof(C));
Changerait son sens, puis dans un cas on a une new expression qui
appelle la fonction new de la bibliothèque, alors que dans le second, on
appelle une fonction d'allocation ?
??? Bah, à peine que je vérifie les valeurs retournées par les fonctions !
Et après ont s'étonne que les programmes plantent... Rien d'étonnant si
les 99% des programmeurs raisonnent comme toi.
Dis-moi, et si ton new() plante, puisque tu ne vérifie pas, je suis
curieux de savoir comment tu poursuis ton programme...
bien sur qu'on vérifie, mais un capture les exceptions dans un try...catch
qui est général et pas ligne à ligne.
Par exemple :
try {
A = new classe;
B = new classe;
C = new classe;
D = new classe;
}
catch(std::bad_alloc)
{
std::cerr<<"nErreur d'allocation mémoire";
throw;
}
??? Bah, à peine que je vérifie les valeurs retournées par les fonctions !
Et après ont s'étonne que les programmes plantent... Rien d'étonnant si
les 99% des programmeurs raisonnent comme toi.
Dis-moi, et si ton new() plante, puisque tu ne vérifie pas, je suis
curieux de savoir comment tu poursuis ton programme...
bien sur qu'on vérifie, mais un capture les exceptions dans un try...catch
qui est général et pas ligne à ligne.
Par exemple :
try {
A = new classe;
B = new classe;
C = new classe;
D = new classe;
}
catch(std::bad_alloc)
{
std::cerr<<"nErreur d'allocation mémoire";
throw;
}
??? Bah, à peine que je vérifie les valeurs retournées par les fonctions !
Et après ont s'étonne que les programmes plantent... Rien d'étonnant si
les 99% des programmeurs raisonnent comme toi.
Dis-moi, et si ton new() plante, puisque tu ne vérifie pas, je suis
curieux de savoir comment tu poursuis ton programme...
bien sur qu'on vérifie, mais un capture les exceptions dans un try...catch
qui est général et pas ligne à ligne.
Par exemple :
try {
A = new classe;
B = new classe;
C = new classe;
D = new classe;
}
catch(std::bad_alloc)
{
std::cerr<<"nErreur d'allocation mémoire";
throw;
}
> A = (classe*)malloc(sizeof(classe));
La 2e version ne te parait pas plus lourde que la
première ?
il n'y a pas forcément de sérieur et de rigueur quand on choisit une
solution plus lourde qu'une autre
> A = (classe*)malloc(sizeof(classe));
La 2e version ne te parait pas plus lourde que la
première ?
il n'y a pas forcément de sérieur et de rigueur quand on choisit une
solution plus lourde qu'une autre
> A = (classe*)malloc(sizeof(classe));
La 2e version ne te parait pas plus lourde que la
première ?
il n'y a pas forcément de sérieur et de rigueur quand on choisit une
solution plus lourde qu'une autre
"Loïc Joly" wrote in message
news:4199041e$0$20975$Vincent Burel wrote:
J'essaie de comprendre ton vocabulaire et la distinction que tu essaie
de faire. Quand tu as le code suivant :
class C{/*...*/};
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
mémoire, la création de l'objet étant réalisée par le new de la ligne 2 ?
oui.
Et pour toi, remplacer la ligne 1 par
non pas pour moi, pour tout le monde ! :-)
char *p = (char*) malloc(sizeof(C));
Changerait son sens, puis dans un cas on a une new expression qui
appelle la fonction new de la bibliothèque, alors que dans le second, on
appelle une fonction d'allocation ?
ben oui. Remplacez "new" par "CreateObject" et peut-être la disctinction
vous sautera aux yeux...
Et j'ajoute, que cette distinction n'est pas de mon fait.
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> wrote in message
news:4199041e$0$20975$8fcfb975@news.wanadoo.fr...
Vincent Burel wrote:
J'essaie de comprendre ton vocabulaire et la distinction que tu essaie
de faire. Quand tu as le code suivant :
class C{/*...*/};
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
mémoire, la création de l'objet étant réalisée par le new de la ligne 2 ?
oui.
Et pour toi, remplacer la ligne 1 par
non pas pour moi, pour tout le monde ! :-)
char *p = (char*) malloc(sizeof(C));
Changerait son sens, puis dans un cas on a une new expression qui
appelle la fonction new de la bibliothèque, alors que dans le second, on
appelle une fonction d'allocation ?
ben oui. Remplacez "new" par "CreateObject" et peut-être la disctinction
vous sautera aux yeux...
Et j'ajoute, que cette distinction n'est pas de mon fait.
"Loïc Joly" wrote in message
news:4199041e$0$20975$Vincent Burel wrote:
J'essaie de comprendre ton vocabulaire et la distinction que tu essaie
de faire. Quand tu as le code suivant :
class C{/*...*/};
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
mémoire, la création de l'objet étant réalisée par le new de la ligne 2 ?
oui.
Et pour toi, remplacer la ligne 1 par
non pas pour moi, pour tout le monde ! :-)
char *p = (char*) malloc(sizeof(C));
Changerait son sens, puis dans un cas on a une new expression qui
appelle la fonction new de la bibliothèque, alors que dans le second, on
appelle une fonction d'allocation ?
ben oui. Remplacez "new" par "CreateObject" et peut-être la disctinction
vous sautera aux yeux...
Et j'ajoute, que cette distinction n'est pas de mon fait.
> Oui, cependant le débutant se doit de se faire un tableau dynamique avec
> du
> malloc, il se doit de faire des applications typiques comme celle ci, il
> se
> doit d'expérimenter les concept de base de la programmation. Parce que
> débutant a du temps par définition ! temps qu'il doit utiliser pour
> comprendre les mécanismes de bases de l'informatique, ainsi aura-t-il
> chance de devenir un programmeur...
pourquoi alors ne pas directement appeler les méthodes du système
d'exploitation pour demander une page mémoire ? C'est vrai, quoi, malloc
c'est pas assez conceptuel.
On rappelle le point de départ : un posteur cherchait à faire un tableau
dynamique pour passer des pixels de nombre inconnu au départ d'une
à l'autre. Proposer de re-coder à base de malloc une liste chainée ou un
tableau dynamique à la place d'utiliser un std::vector ne l'aide pas tant
que ça.
> Oui, cependant le débutant se doit de se faire un tableau dynamique avec
> du
> malloc, il se doit de faire des applications typiques comme celle ci, il
> se
> doit d'expérimenter les concept de base de la programmation. Parce que
> débutant a du temps par définition ! temps qu'il doit utiliser pour
> comprendre les mécanismes de bases de l'informatique, ainsi aura-t-il
> chance de devenir un programmeur...
pourquoi alors ne pas directement appeler les méthodes du système
d'exploitation pour demander une page mémoire ? C'est vrai, quoi, malloc
c'est pas assez conceptuel.
On rappelle le point de départ : un posteur cherchait à faire un tableau
dynamique pour passer des pixels de nombre inconnu au départ d'une
à l'autre. Proposer de re-coder à base de malloc une liste chainée ou un
tableau dynamique à la place d'utiliser un std::vector ne l'aide pas tant
que ça.
> Oui, cependant le débutant se doit de se faire un tableau dynamique avec
> du
> malloc, il se doit de faire des applications typiques comme celle ci, il
> se
> doit d'expérimenter les concept de base de la programmation. Parce que
> débutant a du temps par définition ! temps qu'il doit utiliser pour
> comprendre les mécanismes de bases de l'informatique, ainsi aura-t-il
> chance de devenir un programmeur...
pourquoi alors ne pas directement appeler les méthodes du système
d'exploitation pour demander une page mémoire ? C'est vrai, quoi, malloc
c'est pas assez conceptuel.
On rappelle le point de départ : un posteur cherchait à faire un tableau
dynamique pour passer des pixels de nombre inconnu au départ d'une
à l'autre. Proposer de re-coder à base de malloc une liste chainée ou un
tableau dynamique à la place d'utiliser un std::vector ne l'aide pas tant
que ça.
Vincent Burel wrote:
>>char *p = new char[sizeof(C)]; // 1
>>C* pC = new(p) C; // 2
>>
>>Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
>>mémoire, la création de l'objet étant réalisée par le new de la ligne 2
>
>
> oui.
Pourrais tu développer quel est de ton point de vue son rôle
supplémentaire ?
Es-tu en mode troll ? Si oui, merci de me l'indiquer plus clairement,
pour éviter que je perde mon temps. Si non, merci de me citer un article
qui va dans le sens de ta vision.
On tourne en rond. Si je résume :
Toi : new n'alloue pas, il ne fait que créer des objets
Moi : Voici un exemple où new ne crée pas l'objet, puisque l'objet est
créé plus tard
Toi : Si tu remplace new par CreateObjet, tu verra que tu crée un objet
C'est un peu comme si je te disais : Malloc n'alloue pas de la mémoire,
il fait des achats avec ta carte bleue. La preuve, si dans ton code, tu
remplaces malloc par FaitDesAchatsAvecLaCarteBleue, tu verras ce que
malloc fait vraiment.
Vincent Burel wrote:
>>char *p = new char[sizeof(C)]; // 1
>>C* pC = new(p) C; // 2
>>
>>Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
>>mémoire, la création de l'objet étant réalisée par le new de la ligne 2
>
>
> oui.
Pourrais tu développer quel est de ton point de vue son rôle
supplémentaire ?
Es-tu en mode troll ? Si oui, merci de me l'indiquer plus clairement,
pour éviter que je perde mon temps. Si non, merci de me citer un article
qui va dans le sens de ta vision.
On tourne en rond. Si je résume :
Toi : new n'alloue pas, il ne fait que créer des objets
Moi : Voici un exemple où new ne crée pas l'objet, puisque l'objet est
créé plus tard
Toi : Si tu remplace new par CreateObjet, tu verra que tu crée un objet
C'est un peu comme si je te disais : Malloc n'alloue pas de la mémoire,
il fait des achats avec ta carte bleue. La preuve, si dans ton code, tu
remplaces malloc par FaitDesAchatsAvecLaCarteBleue, tu verras ce que
malloc fait vraiment.
Vincent Burel wrote:
>>char *p = new char[sizeof(C)]; // 1
>>C* pC = new(p) C; // 2
>>
>>Pour toi, le new de la ligne 1 n'a pas pour seul but d'allouer de la
>>mémoire, la création de l'objet étant réalisée par le new de la ligne 2
>
>
> oui.
Pourrais tu développer quel est de ton point de vue son rôle
supplémentaire ?
Es-tu en mode troll ? Si oui, merci de me l'indiquer plus clairement,
pour éviter que je perde mon temps. Si non, merci de me citer un article
qui va dans le sens de ta vision.
On tourne en rond. Si je résume :
Toi : new n'alloue pas, il ne fait que créer des objets
Moi : Voici un exemple où new ne crée pas l'objet, puisque l'objet est
créé plus tard
Toi : Si tu remplace new par CreateObjet, tu verra que tu crée un objet
C'est un peu comme si je te disais : Malloc n'alloue pas de la mémoire,
il fait des achats avec ta carte bleue. La preuve, si dans ton code, tu
remplaces malloc par FaitDesAchatsAvecLaCarteBleue, tu verras ce que
malloc fait vraiment.
"Loïc Joly" wrote in message
news:41990e3c$0$21003$Vincent Burel wrote:char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
mon point de vue !? ben, je ne t'apprend rien si je te dis que le new
déclenche l'appel des éventuels constructeurs...
Es-tu en mode troll ? Si oui, merci de me l'indiquer plus clairement,
pour éviter que je perde mon temps. Si non, merci de me citer un article
qui va dans le sens de ta vision.
De ton côté, si tu estime m'avoir fait gagner du temps, démontre le moi,
alors je te
répondrai ! :-)
Tu me fais penser à cet employé qui affirmait dur comme fer, que la
commande clavier CTRL-X servait à effacer un texte dans Word, et que CTRL-V
faisait office de UNDO . Il m'a été impossible de lui expliquer vraiment à
quoi servait le CTRL-X et le CTRL-V. Et l'expérience montre que certains
individus, sont inaptes à comprendre quelque chose de différent que ce qu'il
ont déjà compris auparavant. :-)
j'aime bien cet anecdote non !? :-)
"Loïc Joly" <loic.actarus.joly@wanadoo.fr> wrote in message
news:41990e3c$0$21003$8fcfb975@news.wanadoo.fr...
Vincent Burel wrote:
char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
mon point de vue !? ben, je ne t'apprend rien si je te dis que le new
déclenche l'appel des éventuels constructeurs...
Es-tu en mode troll ? Si oui, merci de me l'indiquer plus clairement,
pour éviter que je perde mon temps. Si non, merci de me citer un article
qui va dans le sens de ta vision.
De ton côté, si tu estime m'avoir fait gagner du temps, démontre le moi,
alors je te
répondrai ! :-)
Tu me fais penser à cet employé qui affirmait dur comme fer, que la
commande clavier CTRL-X servait à effacer un texte dans Word, et que CTRL-V
faisait office de UNDO . Il m'a été impossible de lui expliquer vraiment à
quoi servait le CTRL-X et le CTRL-V. Et l'expérience montre que certains
individus, sont inaptes à comprendre quelque chose de différent que ce qu'il
ont déjà compris auparavant. :-)
j'aime bien cet anecdote non !? :-)
"Loïc Joly" wrote in message
news:41990e3c$0$21003$Vincent Burel wrote:char *p = new char[sizeof(C)]; // 1
C* pC = new(p) C; // 2
mon point de vue !? ben, je ne t'apprend rien si je te dis que le new
déclenche l'appel des éventuels constructeurs...
Es-tu en mode troll ? Si oui, merci de me l'indiquer plus clairement,
pour éviter que je perde mon temps. Si non, merci de me citer un article
qui va dans le sens de ta vision.
De ton côté, si tu estime m'avoir fait gagner du temps, démontre le moi,
alors je te
répondrai ! :-)
Tu me fais penser à cet employé qui affirmait dur comme fer, que la
commande clavier CTRL-X servait à effacer un texte dans Word, et que CTRL-V
faisait office de UNDO . Il m'a été impossible de lui expliquer vraiment à
quoi servait le CTRL-X et le CTRL-V. Et l'expérience montre que certains
individus, sont inaptes à comprendre quelque chose de différent que ce qu'il
ont déjà compris auparavant. :-)
j'aime bien cet anecdote non !? :-)