|
| Sletning af pointere Fra : Bear |
Dato : 25-05-01 13:33 |
|
Hey there
Er der nogen måde at undersøge om den pointer man vil slette indgår i et
pointer array?
Ex:
class X{
public:
X(int val);
X();
~X();
int value;
};
X::X(){value=0;}
X::X(int val)
: value(val){}
X: X()
{
cout << value << " died" << endl;
}
void cleanup(X* x)
{
//pseudo kode
if array
delete [] x;
else
delete x;
}
int main()
{
X* x1 = new X[20];
X* x2 = new X();
cleanup(x1);
cleanup(x2);
}
Hvis kun man bare vælger delete [] x i cleanup(X* x) og det ikke er et
pointer array får man en memory violation :(
mvh
Bear
ICQ: 2745075
| |
Igor V. Rafienko (25-05-2001)
| Kommentar Fra : Igor V. Rafienko |
Dato : 25-05-01 16:05 |
|
* the-merc@usa.net
> Er der nogen måde at undersøge om den pointer man vil slette indgår
> i et pointer array?
Nei, ikke i utgangspunktet. Men nå kan man la være å bruke arrays da :)
[snip]
ivr
--
Documentation is like sex: when it is good, it is very, very good; and
when it is bad, it is better than nothing.
-- Dick Brandon
| |
Mogens Hansen (25-05-2001)
| Kommentar Fra : Mogens Hansen |
Dato : 25-05-01 16:34 |
|
> int main()
> {
> X* x1 = new X[20];
> X* x2 = new X();
skriv
X* x2 = new X[1];
i stedet, så er det problem løst.
Et godt råd: brug std::vector i stedet.
Venlig hilsen
Mogens Hansen
| |
|
|