请问如何获取一个自定义结构的地址?或者说如何让其支持 as_ptr()? 我要将这个结构的二进制数据复制到内存中,需要的两个参数是结构地址和size,size好计算,地址就不知道怎么获取了。 谢谢。
1
共 6 条评论, 1 页
请问如何获取一个自定义结构的地址?或者说如何让其支持 as_ptr()? 我要将这个结构的二进制数据复制到内存中,需要的两个参数是结构地址和size,size好计算,地址就不知道怎么获取了。 谢谢。
评论区
写评论谢谢。
--
👇
Bai-Jinlin: 这个你得具体类型具体分析呀,String你要复制就as_bytes之后复制&[u8]就行了,要是有个类型是这样的
那你不就得自己用原始指针和对应的长度手动复制了吗
这个你得具体类型具体分析呀,String你要复制就as_bytes之后复制&[u8]就行了,要是有个类型是这样的
那你不就得自己用原始指针和对应的长度手动复制了吗
--
👇
chaoxi24: 谢谢。这意味着无法直接将结构内的String通过结构地址复制出去了是吗?只能将其转换类似vec[u16]之类的数据。
--
👇
johnmave126: String的内存分配在堆上,实际通过指针访问,本来就不是结构大小的一部分。
运行时的话,可以考虑这个和这个,算出实际分配的大小。
谢谢。这意味着无法直接将结构内的String通过结构地址复制出去了是吗?只能将其转换类似vec[u16]之类的数据。
--
👇
johnmave126: String的内存分配在堆上,实际通过指针访问,本来就不是结构大小的一部分。
运行时的话,可以考虑这个和这个,算出实际分配的大小。
String的内存分配在堆上,实际通过指针访问,本来就不是结构大小的一部分。
运行时的话,可以考虑这个和这个,算出实际分配的大小。
--
👇
chaoxi24: 谢谢。顺便请问怎样获取结构的真实大小啊,"std::mem::size_of::()"只能获取初始大小,包含String的可变键值就无法计算出来了
谢谢。顺便请问怎样获取结构的真实大小啊,"std::mem::size_of::()"只能获取初始大小,包含String的可变键值就无法计算出来了
--
👇
johnmave126:
&var as *const _
或者&var as *mut _
&var as *const _
或者&var as *mut _