小编Ale*_*x C的帖子

分支预测会破坏我的程序吗?

本书的第3章称为计算机系统架构:程序员的观点,它表示一个类似的实现

testl %eax, %eax
cmovne (%eax), %edx
Run Code Online (Sandbox Code Playgroud)

是无效的,因为如果预测失败,那么我们将有NULL解除引用.还声明我们应该使用分支代码.

不过,不使用条件跳转会导致相同的结果吗?例如:

.L1:
jmp *%eax

testl %eax, %eax
jne .L1
Run Code Online (Sandbox Code Playgroud)

是否有可能欺骗gcc为x86-32输出类似的内容?假设我有一个指向函数的指针数组,其中一些是有效的,有些则不是,我称每个函数都不是NULL.

x86 assembly computer-architecture branch-prediction

14
推荐指数
1
解决办法
711
查看次数

boost ::任何类型更改导致非法访问

在通过boost cpp库测试示例时,我注意到更改存储在boost :: any变量中的类型可能会导致非法访问而不是异常:

好:

boost::any a = 1;
bool *p = boost::any_cast<bool>(&a); // ok, bad cast exception
Run Code Online (Sandbox Code Playgroud)

坏:

boost::any a = std::string { "Boost" };
a = 1;
bool *p = boost::any_cast<bool>(&a); // no exception thrown
std::cout << std::boolalpha << *p << '\n'; // illegal access
Run Code Online (Sandbox Code Playgroud)

因此,我的问题是:这是一个看似错误的错误,还是与模板使用相关的一些潜在事实,我不知道?

c++ boost shared-ptr

5
推荐指数
1
解决办法
211
查看次数

为什么即使回调参数与XML中的回调参数不匹配,仍会调用GObject方法?

假设我有这样的方法

<interface name="org.Test.ChildTest">
    <!-- set_age(guint32 new_age): sets new age -->
        <method name="set_age">
            <arg type="u" name="new_age" direction="in"/>
        </method>
Run Code Online (Sandbox Code Playgroud)

在我的方法表中,我有:

{ (GCallback) child_test_set_age, dbus_glib_marshal_child_test_BOOLEAN__UINT_POINTER, 0 }
Run Code Online (Sandbox Code Playgroud)

和正确的GObject方法签名是:

gboolean
child_test_set_age (ChildTest *childTest, guint ageIn, GError** error)
Run Code Online (Sandbox Code Playgroud)

为什么child_test_set_age()即使回调参数与我的XML中指定的回调参数不匹配,我的方法仍会在DBus上调用?例如,如果我之后添加另一种说法guint ageIn,像一个char*guint或其他一些随机类型?

我注意到如果DBus函数包含方向为OUT的成员,这将不起作用.似乎任何类型IN的不必要的参数都会被丢弃,并且调用会像往常一样完成.

虽然我认为这没有任何区别,但我使用的是D-BUS绑定工具0.94,glib-2.30.0和dbus-glib 0.94.

c linux dbus glib calling-convention

3
推荐指数
1
解决办法
248
查看次数

ios 10 youtube iframe 无法播放

我在 HTML 代码中使用以下 iframe:

        <iframe src="<iframeurl>">?autoplay=1" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

在装有 iOS10 的 iPhone 上,这不会自动播放。我得到了红色的播放按钮之类的东西。在 Windows chrome 和其他所有工作正常自动播放正确启动。但不是用iphone。

我可以在 javascript 中做些什么或通过操纵 URL 来进行自动播放吗?我知道苹果过去在 iOS10 之前禁止自动播放,所以也许我在这里做错了什么..

html iphone iframe autoplay ios

3
推荐指数
1
解决办法
3043
查看次数