Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c++ > #13346

Re: How to free this memory?

From "Paul" <pchrist<nospam>or@yahoo.co.uk>
Newsgroups comp.lang.c++
Subject Re: How to free this memory?
Date 2012-01-13 18:07 +0000
Organization Netfront http://www.netfront.net/
Message-ID <jepru7$1887$1@adenine.netfront.net> (permalink)
References <CB35C06F.B997%bint@ign.com> <jepq5f$bvj$1@dont-email.me>

Show all headers | View raw


"Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> wrote in message 
news:jepq5f$bvj$1@dont-email.me...
> On 13.01.2012 18:05, Bint wrote:
>> Hello, I am allocating some vertices to pass to a function, and then I 
>> want
>> to free the memory.  How do I do this?  The compiler is giving me 
>> warnings
>> when I do it this way:
>>
>>          trivertex **vertices;
>>
>>          vertices = new trivertex*[2];
>>
>>          vertices[0] = new trivertex[100];
>>          vertices[1] = new trivertex[50];
>>
>> .
>> .
>> .
>>          delete vertices[0];
>>          delete vertices[1];
>>          delete vertices;
>>
>> I get this warning:
>> " 'delete' applied to a pointer-to-array type 'trivertex *' (aka 'double
>> (*)[3]') treated as delete"
>
> When you allocate with `new[]`, you should/must delete with `delete[]`.
>
> But you should not do use raw arrays and raw new.
>
> Use standard library containers such as `std::vector`.
>
>
> <code>
> #include <iostream>
> #include <vector>
>
> int main()
> {
>     using namespace std;
>
>     struct TriVertex { double x, y, z; };
>     typedef vector<TriVertex>       VertexVector;
>     typedef vector<VertexVector>    VertexVectorVector;
>
>     VertexVectorVector  vertices( 2 );
>     vertices[0].resize( 100 );
>     vertices[1].resize( 50 );
> }
> </code>
>
>

Hi Alf
Thanks for the extra tips.
As an additional discussion point , how would you pass, for example, a 
pointer to a vertex as a function argument when using the vector method?
For example:
void example_function(trivertex* arg){};

example_function( vertices[0] ); /*No this won't convert to a pointer*/


I always feel I am entering dangerous territory when I start thinking about 
pointers to vector elements.
I am thinking of an iterator or something but I wonder if any iterator type 
will convert to a pointer, or perhaps using addressof operator &. How would 
you extract a pointer from the vector?









--- Posted via news://freenews.netfront.net/ - Complaints to news@netfront.net ---

Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

How to free this memory? Bint <bint@ign.com> - 2012-01-13 11:05 -0600
  Re: How to free this memory? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-01-13 18:37 +0100
    Re: How to free this memory? "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-13 18:07 +0000
      Re: How to free this memory? "Alf P. Steinbach" <alf.p.steinbach+usenet@gmail.com> - 2012-01-13 19:38 +0100
        Re: How to free this memory? "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-13 20:35 +0000
          Re: How to free this memory? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-14 02:16 -0800
          Re: How to free this memory? Kevin McCarty <kmccarty@gmail.com> - 2012-01-16 09:08 -0800
      Re: How to free this memory? Kevin McCarty <kmccarty@gmail.com> - 2012-01-13 10:48 -0800
        Re: How to free this memory? Nick Keighley <nick_keighley_nospam@hotmail.com> - 2012-01-14 02:19 -0800
          Re: How to free this memory? Kevin McCarty <kmccarty@gmail.com> - 2012-01-16 08:56 -0800
    Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-13 18:16 +0000
  Re: How to free this memory? "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-13 17:37 +0000
    Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-13 17:47 +0000
      Re: How to free this memory? Bint <bint@ign.com> - 2012-01-13 12:04 -0600
        Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-13 18:10 +0000
          Re: How to free this memory? "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-13 19:20 +0000
            Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-13 19:27 +0000
              Re: How to free this memory? "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-13 19:52 +0000
                Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-13 20:33 +0000
                Re: How to free this memory? "Paul" <pchrist<nospam>or@yahoo.co.uk> - 2012-01-13 20:52 +0000
                Re: How to free this memory? David Dyer-Bennet <dd-b@dd-b.net> - 2012-01-13 15:01 -0600
                Re: How to free this memory? BCFD36 <bcfd36@cruzio.com> - 2012-01-14 02:01 -0800
                Re: How to free this memory? "MikeWhy" <boat042-nospam@yahoo.com> - 2012-01-13 15:46 -0600
                Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-13 21:59 +0000
                Re: How to free this memory? Goran <goran.pusic@gmail.com> - 2012-01-13 22:12 -0800
                Re: How to free this memory? Leigh Johnston <leigh@i42.co.uk> - 2012-01-14 11:58 +0000
            Re: How to free this memory? Goran <goran.pusic@gmail.com> - 2012-01-13 22:01 -0800
        Re: How to free this memory? Victor Bazarov <v.bazarov@comcast.invalid> - 2012-01-13 13:48 -0500
        Re: How to free this memory? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2012-01-14 20:46 +0000
    Re: How to free this memory? Bint <bint@ign.com> - 2012-01-13 11:54 -0600
  Re: How to free this memory? Travis Vitek <travis.vitek@gmail.com> - 2012-01-13 09:21 -0800
    Re: How to free this memory? jgk@panix.com (Joe keane) - 2012-01-14 01:03 +0000

csiph-web