Accueil > Forum > > > > c++ et delete
c++ et delete
vendredi 26 août 2005 à 11:49:10 |
c++ et delete

anne-lise
|
Bonjour !
voila, j'ai un probleme lorsque je veux faire des delete sur des tableauz.
J'ai une fonction du type : float* function(param, int n){ float* l = new float[n]; float* m = new float[n]; float* y = new float[n]; float* u = new float[n];
corps de la fonction ou je manipule tout ca
delete[] l; delete[] m; delete[] y; return u; } Ceci compile mais donne une erreur a l'execution : Debug Error, damage after normal block ... Ca vient des delete mais je ne sais pas pourquoi. Comment faire mon delete sans provoquer d'erreur ? Pourquoi ceci ne marche pas
|
|
vendredi 26 août 2005 à 12:23:20 |
Re : c++ et delete

cosmobob
|
salut,
donne le reste de ta fonction.
regarde aussi si t'as pas d'overflow (si tu fais float* m = new
float[n], tu peux utiliser m[0] à m[n-1]. m[n] n'est pas valide !!!)
a+
|
|
vendredi 26 août 2005 à 13:26:55 |
Re : c++ et delete

anne-lise
|
je ne pense pas que le probleme se situe dans le corp de la fonction car sans les delete je n'ai pas de probleme d'execution et qu'avec les delete le probleme se pose dans plusieures de mes fonctions. Je pense que c'est plutot dans la declaration que ca se passe, cela dit, voici la fonction :
float* function(float alpha[], float gamma_l[], float gamma_u[], float d[], int n, int nbrow,int nbcolumn) { float*l; float*m; float*y; l = new float[n-nbcolumn]; m = new float[n]; y = new float[n]; float* u = new float[n];
for(int x=0;x<nbcolumn;x++){ m[x*nbrow+0]=alpha[x*nbrow+0]; for(int i=0;i<nbrow-1;i++){ l[x*nbrow+i] = gamma_l[x*nbrow+i]/m[x*nbrow+i]; m[x*nbrow+i+1] = alpha[x*nbrow+i+1]-l[x*nbrow+i]*gamma_u[x*nbrow+i]; } y[x*nbrow+0] = d[x*nbrow+0]; for(int j =1;j<nbrow;j++){ y[x*nbrow+j] = d[x*nbrow+j] - l[x*nbrow+j-1]*y[x*nbrow+j-1]; }
u[x*nbrow+nbrow-1] = y[x*nbrow+nbrow-1]/m[x*nbrow+nbrow-1]; for(int k = nbrow-2;k>=0;k--){ u[x*nbrow+k] = (y[x*nbrow+k]-gamma_u[x*nbrow+k]*u[x*nbrow+k+1])/m[x*nbrow+k]; } } /*delete[] l; delete[] m; delete[] y;*/ return u; }
|
|
vendredi 26 août 2005 à 15:40:44 |
Re : c++ et delete

cosmobob
|
comme prévu, ya sans doute overflow:
l[x*nbrow+i] = ...
que valent n, nbrow et nbcolumn ? j'ai supposé que n = nbrow * nbcolumn
essaye avec ce code la:
float* function(float alpha[], float gamma_l[], float gamma_u[], float d[], int n, int nbrow,int nbcolumn)
{
float*l;
float*m;
float*y;
l = new float[n-nbcolumn];
m = new float[n];
y = new float[n];
float* u = new float[n];
for(int x=0;x<nbcolumn;x++)
{
ASSERT(x*nbrow < n); // verifie les bornes pour m
m[x*nbrow+0]=alpha[x*nbrow+0];
for(int i=0;i<nbrow-1;i++)
{
ASSERT(x*nbrow+i < n-nbcolumn); // pour l
l[x*nbrow+i] = gamma_l[x*nbrow+i]/m[x*nbrow+i];
ASSERT(x*nbrow+i+1 < n); // pour m
m[x*nbrow+i+1] = alpha[x*nbrow+i+1]-l[x*nbrow+i]*gamma_u[x*nbrow+i];
}
y[x*nbrow+0] = d[x*nbrow+0];
for(int j =1;j<nbrow;j++)
{
ASSERT(x*nbrow+j < n); // pour y
ASSERT(x*nbrow+j-1 < n-nbcolumn); // pour l
y[x*nbrow+j] = d[x*nbrow+j] - l[x*nbrow+j-1]*y[x*nbrow+j-1];
}
ASSERT( x*nbrow+nbrow-1 < n);
u[x*nbrow+nbrow-1] = y[x*nbrow+nbrow-1]/m[x*nbrow+nbrow-1];
for(int k = nbrow-2;k>=0;k--)
{
ASSERT(x*nbrow+k < n);
u[x*nbrow+k] = (y[x*nbrow+k]-gamma_u[x*nbrow+k]*u[x*nbrow+k+1])/m[x*nbrow+k];
}
}
delete[] l;
delete[] m;
delete[] y;
return u;
}
ca t'enverra une erreur Debug assertion failed si tu allais dépasser les bornes de tes tableaux de float.
|
|
vendredi 26 août 2005 à 15:47:59 |
Re : c++ et delete

cosmobob
|
au fait, quand tu manipules les tableaux de cette maniere, tu fais du C et non du C++ !!
en C++, il y a le type vector pour gerer les tableaux, qui permet
notamment de controler si tu débordes, et qui libere tout seul la
memoire.
#include <vector>
using namespace std;
vector<float> gamma_u;
...
gamma_u.resize(n);
gamma_u[i] = 3.14; // pas de controle des bornes
//ou bien:
gamma_u.at(i) = 3.14; // lance une exception si i dépasse n-1
etc.
|
|
vendredi 26 août 2005 à 16:31:33 |
Re : c++ et delete

anne-lise
|
il y avait effectivement un probleme dans les indices, merci !
Le plus etonnant c'est que malgre ce probleme, le programme avait des resultats coherents, j'ai donc pense a des problemes de declaration et non aux indices ! Merci ! Al
|
|
Cette discussion est classée dans : fonction, erreur, delete, float
Répondre à ce message
Sujets en rapport avec ce message
net use * /delete EN C++ [ par LeBobo ]
Salut. J'ai un petit programme qui utilise la fonction : system(''net use * /delete'') ; Le problème est que mon programme à une interface graphique w
Au secour ! [ par slashparof ]
Au secour! Je ne comprend vraiment pas le problème visual studio me compile cette fonction correctement, mais mon programme cause une erreur quand j'a
variable membre non static dans une fonction membre static [ par adrod ]
J'ai une erreur du compilateur: Error C2597. Je suis allé sur msdn pour avoir plus de précision et ils me disent:To access the nonstatic member, you m
Constructeur destructeur ? [ par Davy8x ]
J'ai débuté un casse brique 3D en C++ OpenGL. J'ai j'uste programmé une balle qui se déplace en 3D, une sorte de bate (un paver) avec l'accélération e
shellexecute et mfc [ par dambeaufort ]
bonjour,je developpe actuellement une application sous mfc.dans cette application, j'ai besoin de d'ouvrir et de lancer des fichier. Pour se faire j'u
Afficher une DialogBox [ par Gabi ]
Donc, j,essai d'afficher une DialogBox juste après que ma fenêtre soit affichée. Mais ça ne marche pas. Aucune erreur de compilation, ni aucune erreur
erreur de conception? [ par frdestroyers27 ]
Salut a tous!ca serait pour savoir si je fait une erreur de conception!j'ai un fichier main.cpp avec la fonction WinMain dedans qui contient juste un
pourquoi ca marche pas :'( [ par xboxut ]
salut j ai un probleme avec une fonction pour initialiser des particules,pouvez vous me dire pourquoi il ne marche pas et comment le faire marcher#inc
tableau a 2 dim [ par Kevin972 ]
salut a tous!!g un probleme pour passer en parametre un tableau a 2 dimensions:fonction1(void){ float tab[400][400];............ fonction(tab);}fo
Quelle est cette erreur __w64 ? [ par themaste ]
Bonjour à tous!Je suis en train de faire un programme, que j'avais fais sous dos avant.Puisque ca marchait, je l'ai repris pour faire une application
Livres en rapport
|
Derniers Blogs
TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson TECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PCTECHDAYS PARIS 2012 : NOUVELLES TENDANCES DU POSTE DE TRAVAIL - BRING YOUR OWN PC par ROMELARD Fabrice
Speakers: Thierry Rapatout, Antoine Petit et Xavier Trebbia Cette session entre dans le cadre des RDV Décideurs des TechDays 2012, elle est liée à la consumérisation de l'IT et la mise en place du "DeskTop as a Service" dans de plus en ...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|