在另一个进程提供的指针上使用 typeid 是否安全,该进程由同一编译器编译
Is typeid safe being used on pointer provided by another process, which is compiled by the same compiler?
根据标准,typeid 运算符是依赖于实现的,因此在由不同编译器编译的其他进程创建的对象上使用它是无稽之谈。但是,提供过程由同一编译器编译的情况是什么?
它可能无法正常工作,因为异物将在其自己的进程空间内包含一个 vtable 指针,而不是检查进程的空间。如果您可以形成一个地址空间,其中两个可执行二进制映像都就位,就好像它们是正在运行的一样,那么也许。如果它是使用相同命令行标志的同一编译器的相同版本,或者如果您的平台 ABI 准确指定了typeid
运行时的工作方式,那么您可能没问题。
但严格来说,C++对象模型不容纳共享内存。您需要在进程之间传输之前进行序列化,并且无法安全地序列化接收端可能不存在的C++类型。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- boost::进程间消息队列引发错误
- 在进程中对同一管道进行读取和写入时C++管道出现问题
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- boost消息队列线程安全和进程安全吗?
- 在进程间内存中使用boost::可选是否安全
- 为特定于进程的安全描述符创建访问令牌
- 在另一个进程提供的指针上使用 typeid 是否安全,该进程由同一编译器编译
- 我知道 pantheios 是线程安全的,但它是进程间安全的吗?
- 在同一进程中使用的两个模块中具有同步对象的通用名称是否安全
- IsDebuggerPresent()函数是停止调试进程的安全方法吗
- 从两个进程安全访问文件
- 是boost::进程间线程安全的
- 创建读取面向互联网的套接字的守护进程有什么安全问题?
- 内存是进程安全的
- 如果使用system用户令牌启动登录用户进程,是否会危及系统安全
- 对于进程间COM对象,不使用QueryInterface,将IDispatch*转换为IUnknown*是否安全?
- 线程杀死它的父进程安全吗?