This suggests that any data allocated in C libs (including statics) is
basically part of a "global" address space available to all tasks in a Rust
program. Is that correct?
Is there as equivalent of malloc() for Rust as well?


On 6 June 2013 22:09, Daniel Micay <[email protected]> wrote:

> On Thu, Jun 6, 2013 at 12:29 PM, Abhijeet Gaiha
> <[email protected]> wrote:
> > Hi,
> >
> > Servo uses several c libraries through Rust wrappers. In such a
> situation,
> > I'm curious as to where is the memory for malloc calls inside these
> > libraries allocated from? This doesn't seem to fit into the standard
> > locations viz. Task Heap, Exchange Heap and Local stack. In C programs
> there
> > is a global heap, but nothing in the rust docs I've looked at so far
> > suggests such a thing exists right now. Which leads me to this question.
> >
> > Thanks,
> > Abhijeet
>
> The malloc/free functions are wrappers on top of sbrk and/or mmap (or
> similar calls on Windows) to obtain memory from the OS. All memory
> allocators get the memory from the same place and the process has one
> address space, so there isn't really a difference.
>
> In fact right now, Rust obtains all heap memory from the system's C
> library malloc/free (likely soon to be jemalloc instead).
>
> The local heap and exchange heap don't really exist, they're terms the
> documentation used as an attempt to explain how things work, but it
> was never really accurate. Unique pointers/vectors containing managed
> boxes would be on the "local heap" if we did have one.
>
> The only distinction we should make is that Owned types (soon to be
> renamed Send) are sendable and other types are task-local.
>



-- 
http://about.me/abhijeet.gaiha
_______________________________________________
Rust-dev mailing list
[email protected]
https://mail.mozilla.org/listinfo/rust-dev

Reply via email to