我有以下堆栈和堆分配的变量:
let var1 = 10;
let var2 = Box::new(10);
打印这些输出相同的值10
:
println!("var1 ={} var2 ={}", var1, * var2);
当我使用mem::size_of_val()
检查尺寸时,var1
为4,var2
为8。
Isn' t var2
指向堆的指针?为什么指针大于堆栈变量(var1
)?
此外,使用" *
" (*var2
)println!()
中的 If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.RichTextBox1.LoadFile(OpenFileDialog1.FileName, RichTextBoxStreamType.PlainText)
End If
应该做些什么?无论如何,我得到10分。
答案 0 :(得分:10)
您没有显示关于如何调用mem::size_of_val
的代码,但我从结果中猜测您正在执行此操作:
println!("var1 size = {}", mem::size_of_val(&var1)); // 4
println!("var2 size = {}", mem::size_of_val(&var2)); // 8
var1
的大小是i32
(4个字节)的大小,而var2
的大小是Box
的大小,这只是一个指针(如果它是特征对象,它将是两个指针)。指针始终为usize
(64位系统上为8个字节)。
如果您首先取消引用该框,那么该尺寸将是该框的内容,并且您将获得您期望的结果:
println!("var2 size = {}", mem::size_of_val(&*var2)); // 4
此外,使用"
*
" (*var2
)println!()
中的println!
应该做些什么?无论如何,我得到10分。
format!
宏以及&
和其他一些内容将始终在var App = Vue.extend({});
var postList = Vue.extend({
template:'#post-list-template',
data: function(){
return {
posts: ''
}
},
ready: function(){
posts = this.$resource('/wp-json/wp/v2/posts?per_page=20');
posts.get(function(posts){
this.$set('posts', posts);
})
}
})
var router = new VueRouter({
routes: [
{ path: '/', component: postList }
]
})
new Vue({
el: '#app',
router: router,
template: '<router-view></router-view>'
})
**index.php**
前加上一个值,以确保它被借用,而不是移动或复制。当需要该值时,它将根据需要自动解除引用次数。有关详细信息,请参阅this answer。