Groups | Search | Server Info | Keyboard shortcuts | Login | Register
Groups > comp.lang.c++.moderated > #7361
| Message-ID | <2c17f2db-7b27-4bec-9b65-ed582e1256aa@googlegroups.com> (permalink) |
|---|---|
| Newsgroups | comp.lang.c++.moderated |
| From | Martin Bonner <martinfrompi@yahoo.co.uk> |
| Subject | Re: Alignment, placement new and struct with pointer to array of POD |
| Organization | unknown |
| References | <13729986-bf6d-40c4-8721-0e607a43d766@googlegroups.com> <82ccb967-4264-4420-b627-533a10e8ada8@googlegroups.com> <4e7be5e0-6530-4995-97f0-856ae929cfc6@googlegroups.com> |
| Date | 2015-12-15 13:55 -0600 |
On Tuesday, 15 December 2015 14:10:17 UTC+1, Daniel wrote:
> On Monday, December 14, 2015 at 8:00:20 AM UTC-5, Martin Bonner wrote:
> > On Sunday, 13 December 2015 19:10:14 UTC+1, Daniel wrote:
>
> > > But what if we have
> > >
> > > struct B
> > > {
> > > size_t length;
> > > int *p;
> > > };
> > >
> > > and wish to allocate storage for B and p with placement new from the
> > > same storage?
>
> > I think you need to define:
> > struct BB { struct B b; int i[1] };
> > typedef typename std::aigned_storage<sizeof(B),
> > alignof(B)>::type storage_type;
> >
> > size_t length = 10;
> > char* storage = new char[sizeof(storage_type) +
> > (length-1)*sizeof(int)];
> > B* pb = new(storage)B();
> > auto pbb = reinterpret_cast<BB*>(storage);
> > pb->p = new(&pbb->i)int[length];
> >
> Thank you very much! that definitely helps my understanding. But did you
> mean to write BB instead of B in the typedef for storage_type?
Yes!
(and apologies to mod for failing to format correctly last time)
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
Back to comp.lang.c++.moderated | Previous | Next — Previous in thread | Next in thread | Find similar
Alignment, placement new and struct with pointer to array of POD Daniel <danielaparker@googlemail.com> - 2015-12-13 12:01 -0600
Re: Alignment, placement new and struct with pointer to array of POD Martin Bonner <martinfrompi@yahoo.co.uk> - 2015-12-14 06:52 -0600
Re: Alignment, placement new and struct with pointer to array of POD Daniel <danielaparker@googlemail.com> - 2015-12-15 07:08 -0600
Re: Alignment, placement new and struct with pointer to array of POD Martin Bonner <martinfrompi@yahoo.co.uk> - 2015-12-15 13:55 -0600
Re: Alignment, placement new and struct with pointer to array of POD evansl <cppljevans@googlemail.com> - 2016-01-11 06:46 -0600
Re: Alignment, placement new and struct with pointer to array of POD evansl <cppljevans@googlemail.com> - 2016-01-12 07:21 -0600
csiph-web