小编han*_*bal的帖子

使用"jmp*%esp"时操作数类型不匹配

我的代码中有这个代码段

void jmp_esp()
{
    __asm__("jmp *%esp");
}
Run Code Online (Sandbox Code Playgroud)

用gcc编译时

gcc aslr.c -o aslr -ggdb -fno-stack-protector -z execstack
Run Code Online (Sandbox Code Playgroud)

我收到这个错误.

aslr.c: Assembler messages:
aslr.c:6: Error: operand type mismatch for `jmp'
Run Code Online (Sandbox Code Playgroud)

尽管汇编指令有效,为什么这行无法编译?

我读过有关DEP(数据执行预防)的文章.可能是这个功能正在创建这个编译错误?如果是的话,如何禁用它?

c assembly stack-pointer

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

使用java创建Windows用户帐户

是否可以创建/删除Windows用户帐户并设置其权限,使其使用Java代码成为管理员帐户,简单用户帐户或来宾帐户?

java account privileges

2
推荐指数
1
解决办法
2023
查看次数

std :: system实例化单例对象时的异常

我正在学习如何在以后实现线程安全的单例模式c++11.

#include <iostream>
#include <memory>
#include <mutex>

class Singleton
{
public:
    static Singleton& get_instance();
    void print();

private:
    static std::unique_ptr<Singleton> m_instance;
    static std::once_flag m_onceFlag;
    Singleton(){};
    Singleton(const Singleton& src);
    Singleton& operator=(const Singleton& rhs);
};

std::unique_ptr<Singleton> Singleton::m_instance = nullptr;
std::once_flag Singleton::m_onceFlag;

Singleton& Singleton::get_instance(){
        std::call_once(m_onceFlag, [](){m_instance.reset(new Singleton());});
        return *m_instance.get();
};

void Singleton::print(){
    std::cout << "Something" << std::endl;
}

int main(int argc, char const *argv[])
{
    Singleton::get_instance().print();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

代码编译很好,但在执行时我收到以下异常.

terminate called after throwing an instance of 'std::system_error'
what():  Unknown error -1 …
Run Code Online (Sandbox Code Playgroud)

c++ singleton c++11

2
推荐指数
1
解决办法
231
查看次数

标签 统计

account ×1

assembly ×1

c ×1

c++ ×1

c++11 ×1

java ×1

privileges ×1

singleton ×1

stack-pointer ×1