🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.objects
Article #5132

Re: Czym różni się wróbelek... Czyli rozmiar tablic w C++

#5132
From: Marcin 'Qrczak' Kowalczyk
Date: Tue, 09 Mar 1999 19:20
61 lines
2428 bytes
Tue, 9 Mar 1999, Pszemol pisze:

> Ta druga deklaracja wymaga chyba dodatkowej informacji o ilości
> obiektów w tablicy... Śmierdzi mi tu jakimś dodatkowym intem :-)

Dokładnie tak zwykle jest. To znaczy formalnie nie jest wyspecyfikowane,
skąd kompilator ma wiedzieć, ile zwolnić, ale naturalną metodą jest
dodatkowy int przed tablicą. Na przykład:

[qrczak ~]$ g++ --version
egcs-2.91.60
[qrczak ~]$ cat t.cc
#include <stdlib.h>
#include <iostream.h>

class Trywialna
{
public:
        int x;
};

class Nietrywialna
{
public:
        int x;
        ~Nietrywialna() {}
};

main()
{
        int *x = (int *) malloc (100 * sizeof (int));
        cout << (int) x << "\n";
        free (x);

        int *y = new int[100];
        cout << (int) y << "\n";
        delete[] y;

        Trywialna *z = new Trywialna[100];
        cout << (int) z << "\n";
        delete[] z;

        Nietrywialna *t = new Nietrywialna[100];
        cout << (int) t << " " << ((int *)t)[-1] << "\n";
        delete[] t;

        return 0;
}
[qrczak ~]$ ./t
134520160
134520160
134520160
134520164 100

Jak widać, dodatkowy licznik jest używany tylko kiedy jest potrzebny.

-- 
 __("<    Marcin Kowalczyk * qrczak@knm.org.pl http://kki.net.pl/qrczak/
 \__/       GCS/M d- s+:-- a22 C+++>+++$ UL++>++++$ P+++ L++>++++$ E->++
  ^^                W++ N+++ o? K? w(---) O? M- V? PS-- PE++ Y? PGP->+ t
QRCZAK                  5? X- R tv-- b+>++ DI D- G+ e>++++ h! r--%>++ y-
Technical Details
Message-ID: <Pine.LNX.4.10.9903091859390.459-100000@qrnik.knm.org.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!polsl.gliwice.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail
References: <7c3g46$cud$1@h1.uw.edu.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!pingwin.icm.edu.pl!agh.edu.pl!polsl.gliwice.pl!orion.cst.tpsa.pl!news.tpnet.pl!not-for-mail
From: Marcin 'Qrczak' Kowalczyk <qrczak@knm.org.pl>
Newsgroups: pl.comp.lang.c,pl.comp.objects,pl.comp.programming
Subject: Re: Czym różni się wróbelek... Czyli
 rozmiar tablic w C++
Organization: Klub Nieszkodliwych Manjaków
Lines: 62
Message-ID: <Pine.LNX.4.10.9903091859390.459-100000@qrnik.knm.org.pl>
References: <7c3g46$cud$1@h1.uw.edu.pl>
Mime-Version: 1.0
In-Reply-To: <7c3g46$cud$1@h1.uw.edu.pl>
Date: Tue, 09 Mar 1999 19:20:28 GMT
NNTP-Posting-Host: 212.160.52.150
X-Complaints-To: abuse@tpsa.pl
X-Trace: news.tpnet.pl 921007228 212.160.52.150 (Tue, 09 Mar 1999 20:20:28 MET DST)
NNTP-Posting-Date: Tue, 09 Mar 1999 20:20:28 MET DST
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit