+ 2024.02.28(晚上): 今天csdn上有网友[留言](https://blog.csdn.net/weixin_39871788/article/details/126174921#comments_31404336)发现quard_star_machine_class_init函数中给machine设置props,使用了device_class_set_props(DEVICE_CLASS(oc), quard_star_props),但是这里oc是machine类型,转换为device类型理应出错,但是实际上却没有,这是为什么呢?我查看了一下qemu的源码,发现了这个问题。oc是machine类,DEVICE_CLASS对oc的检查不要求完全严格,因此通过了动态类型转换的检查,之后device_class_set_props函数除了赋值成员Property *props_;之外,其他赋值都是对共同的基类object操作,因此没出现严重问题,但是成员props_所在的Machine类此处的内存变量是const char *desc,因此Machine的desc就没法正常打印了,检查了一下打印这个描述的地方只有使用help才打印,如下:
0 commit comments