On Fri, 7 Dec 2018, 3:26 pm 'Bryan Mills' via golang-nuts <
golang-nuts@googlegroups.com wrote:

> On Monday, December 3, 2018 at 12:02:07 AM UTC-5, Ian Lance Taylor wrote:
>>
>> On Sat, Dec 1, 2018 at 9:39 AM <leeo...@gmail.com> wrote:
>> >
>> > I am using swig wrap a c++ module , the generated go code is like this:
>> >
>> > type  MediaFrame interface {
>> >      GetLength()  uint
>> >      GetData()  (*byte)
>> > }
>> >
>> > I want to convert the *byte  to []byte,  How to do this?
>>
>> One approach is
>>
>> s :=
>> (*[1<<30]byte)(unsafe.Pointer(mf.GetData())[:mf.GetLength():mf.GetLength()]
>>
>> Ian
>>
>
> If you need to handle slices larger than 2³⁰ bytes, a more robust version
> of this same approach is described in
> https://golang.org/issue/13656#issuecomment-303216308.
>
>

Unfortunately this approach is vulnerable to a memory leak due to
https://golang.org/issue/28783 (and I suspect it will be quite a bit slower
too, if performance is important). I wonder if it might be better to use
reflect.SliceHeader guarded with some suitable regression checks.


-- 
> You received this message because you are subscribed to the Google Groups
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to golang-nuts+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to