pub struct Test{
pub a: Vec<u8>,
pub b: Vec<u8>,
pub c: Vec<u8>,
pub d: usize,
}
i want to allocate a,b,c in the heap with size d
like the function in c++ that
a = new vector(10,0);
pub struct Test{
pub a: Vec<u8>,
pub b: Vec<u8>,
pub c: Vec<u8>,
pub d: usize,
}
i want to allocate a,b,c in the heap with size d
like the function in c++ that
a = new vector(10,0);
Do you mean pre-allocating memory for the vec?
Test {
a: Vec::with_capacity(d),
b: Vec::with_capacity(d),
c: Vec::with_capacity(d),
d,
}
So you want the 3rd ctor of the std::vector
right? std::vector<T,Allocator>::vector - cppreference.com
In this case, use vec![0; d]
Test {
a: vec![0; d],
b: vec![0; d],
c: vec![0; d],
d,
}
i need to alloc some heap memory and page align memory
such like use
let ptr = aligned_alloc::aligned_alloc( 100 , page_size::get());
let a = Vec::from_raw_parts( ptr as *mut u8, 100 ,100 );
the above code is work with stack memory but i need to call it in heap
Box::<[u8]>::from_raw() ....
please refer to my reply.
i want to allocate some page-align heap memory.
from_raw_parts
is not safe to use with any memory that hasn't been allocated by another Vec
, or at least Rust's default allocator with exactly the size and alignment that Vec
expects. It may crash horribly if you use any other allocator with it.
If you want Vec
's content to be page-aligned, you must put elements in it that require such alignment, e.g. Vec<PageAlignedStruct>
where the struct has #[repr(align(4096))]
(or some other size).
You can use https://lib.rs/c_vec to have a Vec
-like container backed by memory allocated elsewhere.
The variable-size part of Vec
is always allocated on the heap. It is managed by the fixed-size part of Vec
, which is a 3-usize
smart pointer allocated on the stack, or in another containing struct
or enum
. The current layout of the 3-usize Vec
smart pointer is
{starting_address: usize
, allocated_storage_size: usize
, current_vec_length: usize
}.
It is the starting_address component that can have an alignment requirement (for the referenced storage).
can you show me some code?
because i don't know how to get page-align memory
Best way to get page aligned memory would be to allocate some new pages. To do so, check the memmap
crate.
This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.