Fer*_*eak 8 c c++ plugins sandbox
我正在设计一个C/C++系统,可以扩展所有类型的插件.有一个定义良好的C公共API,它主要与(const) char*其他指针类型一起使用.插件被编译成.so或.dll文件,主应用程序在启动时加载它们,然后根据请求卸载或重新加载它们.
插件可能来自各种来源,值得信赖或不可信赖:)
现在,我想确保,如果一个插件做了一些愚蠢的事情(例如试图释放他本不应该释放的内存),这个动作并没有打倒整个系统,而只是注意到主系统它的行为不当插件,以便从队列中删除它.
代码调用以下列方式完成:
const char* data = get_my_data();
for(int i = 0; i<plugins; i++)
{
plugins[i]->execute(data);
}
Run Code Online (Sandbox Code Playgroud)
但如果plugin[0] "意外"释放数据字符串或覆盖它或错误地跳转到地址0x0这将导致整个系统崩溃,我不希望这样.我怎样才能避免这种灾难.(我知道,我可以复制data字符串...这不能解决我的问题:))
| 归档时间: |
|
| 查看次数: |
772 次 |
| 最近记录: |