有一些技巧,C ++程序员确实知道像“范围保护”,也许还有其他涉及临时工具的技巧。
我不是一个练习C ++的程序员,但我想问(好奇心)第三方库是否会以某种方式损害来电者的堆栈。也许涉及突然的破坏者或某种其他范围的终身魔术?
答案 0 :(得分:3)
方式第三方图书馆可能会伤害来电者'堆
每当第三部分库中的代码运行时 - 无论是OS加载程序知道要调用的动态加载库的初始化例程,还是来自客户端应用程序代码的显式调用 - 通常(在大多数操作系统' / implementation& #39;安全模型)具有与客户端应用程序本身一样多的能力来支持堆栈(或任何其他内存);例如:
void library_code()
{
char x;
char* p = &x;
*(p - 2) = 23; // undefined behaviour - may do nothing or anything,
// but usually overwrites stack or SIGSEGVs
*(p + 54) = 99; // stacks might grow up or down, so may have to + or -
// from &x to address in-use stack memory...
}