Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Polestar 3 Performance, test drive: comodità e potenza possono convivere
Polestar 3 Performance, test drive: comodità e potenza possono convivere
Abbiamo passato diversi giorni alla guida di Polestar 3, usata in tutti i contesti. Come auto di tutti i giorni è comodissima, ma se si libera tutta la potenza è stupefacente
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026
In occasione del proprio Architecture Deep Dive 2025 Qualcomm ha mostrato in dettaglio l'architettura della propria prossima generazione di SoC destinati ai notebook Windows for ARM di prossima generazione. Snapdragon X2 Elite si candida, con sistemi in commercio nella prima metà del 2026, a portare nuove soluzioni nel mondo dei notebook sottili con grande autonomia
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice
DJI Mini 5 Pro porta nella serie Mini il primo sensore CMOS da 1 pollice, unendo qualità d'immagine professionale alla portabilità estrema tipica di tutti i prodotti della famiglia. È un drone C0, quindi in un peso estremamente contenuto e che non richiede patentino, propone un gimbal rotabile a 225 gradi, rilevamento ostacoli anche notturno e autonomia fino a 36 minuti. Caratteristiche che rendono il nuovo drone un riferimento per creator e appassionati
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-03-2011, 11:04   #1
kierlo
Member
 
L'Avatar di kierlo
 
Iscritto dal: Sep 2006
Messaggi: 244
[C++] Segmentation Fault anomala

Ciao a tutti sto iniziando un programma abbastanza semplice e ho definito la classe dei vettori in R^2 con solo due operazioni: somma e moltiplicazione per numero reale.

Il problema è che appena uso uno dei due operatori ( + e * in questo caso) mi va in segmentation fault e non riesco a capire perchè. Posto i 3 codici, se qualcuno ha tempo di aiutarmi mi fa un grande favore. Grazie mille.

Codice:
 file.h

#ifndef lumache_h
#define lumache_h

class Point
{
friend Point operator+ (const Point&,const Point&) ; //Somma fra vettori
friend Point operator* (const double &,const Point&)  ; // scalare per vettore

public:

//default ctor
Point (void);

//ctor
Point ( const double &x, const double &y);

//copy ctor
Point ( const Point & p);

//dtor
~Point();

//metodi:
void Read(); //legge

//operatori:
// Point& operator= (const Point & second) ;

private :
double x_;
double y_;
};
#endif
Codice:
 FILE .cc


#include "lumache.h"
#include "iostream"
using namespace std;
//ctor
Point::Point()
{
	x_=0.;
	y_=0.;
}
//ctor a valori
Point::Point ( const double &x, const double &y) //ctor
{
	x_=x;
	y_=y;
}
// copy ctor
Point::Point( const Point & p) 
{
	x_=p.x_;
	y_=p.y_;
}
//dtor
Point::~Point()
{
	delete &x_;
	delete &y_;
}

// METODI:
void Point::Read() //legge e stampa a schermo
{
	cout << "Il punto ha coordinate : ("<< x_<<","
	<<y_<<"). \n";
}

/**** OPERATORI *****/
//operatore uguale
/*Point& Point::operator=(const Point &original)
{
x_=original.x_;
y_=original.y_;

return *this;
}
*/
// Somsma vettori
Point operator+ (const Point &first ,const Point &second)
{
	return Point( first.x_+second.x_, first.y_+second.y_);
}
Point operator* (const double &alfa, const Point &vector)
 // moltiplicazione scalare-vettore
{
return Point(vector.x_ * alfa, vector.y_ * alfa);
}
Codice:
 FILE .cpp
#include<cstdlib>
#include<iostream>
#include"lumache.h"

using namespace std;

int main()
{
double x,y;

cout << "Inserisci coordinate punto : "<< endl;
cin >> x>> y;
Point r(x,y);
cout << "inserisci un numero : "<< endl;
double a;
cin >> a;
Point f(1,2);
Point g;
g = f+r;
g.Read();

exit(EXIT_SUCCESS) ;
}
Come vedete è abbastanza banale, ma non riesco a trovare l'errore. Ho seguito anche un libro di testo, ma ho problemi lo stesso.
__________________
Acer Timeline 5810t - Arch Linux 64 bit / Windows 7
kierlo è offline   Rispondi citando il messaggio o parte di esso
Old 25-03-2011, 15:01   #2
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
Nel distruttore tenti di liberare memoria che non hai mai allocato dinamicamente.
Torav è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2011, 12:12   #3
kierlo
Member
 
L'Avatar di kierlo
 
Iscritto dal: Sep 2006
Messaggi: 244
E come dovrei fare? Ci han sempre detto di fare così..
In ogni caso non dovrebbe esser la causa del problema , dato che va in segmentation fault se nel cpp metto g= f*a; mentre se non uso l'operatore * tutto va senza problemi..
__________________
Acer Timeline 5810t - Arch Linux 64 bit / Windows 7
kierlo è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2011, 12:19   #4
tuccio`
Senior Member
 
Iscritto dal: Apr 2010
Città: Frosinone
Messaggi: 416
hai bisogno di deallocare esplicitamente la memoria allocata quando la allochi dinamicamente (cioè utilizzando gli operatori new o new[]), e non è il tuo caso, in pratica non devi far niente, e va bene il distruttore di default
tuccio` è offline   Rispondi citando il messaggio o parte di esso
Old 26-03-2011, 22:24   #5
Torav
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 558
Quote:
Originariamente inviato da kierlo Guarda i messaggi
E come dovrei fare? Ci han sempre detto di fare così..
In ogni caso non dovrebbe esser la causa del problema , dato che va in segmentation fault se nel cpp metto g= f*a; mentre se non uso l'operatore * tutto va senza problemi..
Internamente viene creato un oggetto di tipo Point e viene copiato in g. Poi il distruttore viene chiamato e tenta di deallocare memoria mai allocata.
Torav è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Polestar 3 Performance, test drive: comodità e potenza possono convivere Polestar 3 Performance, test drive: comodit&agra...
Qualcomm Snapdragon X2 Elite: l'architettura del SoC per i notebook del 2026 Qualcomm Snapdragon X2 Elite: l'architettura del...
Recensione DJI Mini 5 Pro: il drone C0 ultra-leggero con sensore da 1 pollice Recensione DJI Mini 5 Pro: il drone C0 ultra-leg...
ASUS Expertbook PM3: il notebook robusto per le aziende ASUS Expertbook PM3: il notebook robusto per le ...
Test ride con Gowow Ori: elettrico e off-road vanno incredibilmente d'accordo Test ride con Gowow Ori: elettrico e off-road va...
MediaWorld e il caso degli iPad Air vend...
ESA: rilevati 40 mila asteroidi vicino a...
La batteria salva fabbriche di EQORE ott...
SpaceX Starship: iniziati i test della t...
Datacenter IA nello spazio entro 5 anni,...
Telescopio spaziale James Webb: rilevato...
Ericsson Mobility Report: nel 2025 il 5G...
PLAI DEMO DAY: si chiude il secondo cicl...
Google rilascia Nano Banana Pro: il nuov...
ChatGPT si rinnova ancora: disponibile l...
Ring lancia super sconti di Black Friday...
Black Friday 2025: 450 euro di sconto su...
Tutte le offerte Blink in un unico posto...
OpenAI e Foxconn uniscono le forze per r...
Ricarica delle auto elettriche in 3 minu...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 07:50.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v