对于一个函数是否安全的思考角度,有以下几个方向:
1、函数是否进行内存的非法访问?
申请的内存是否释放,否则造成内存泄漏?
是否存在野指针,悬浮指针的情况?
2、函数返回值的安全:
禁止返回局部变量的地址或者引用,因为在函数调用堆栈的时候栈帧的回退过程中,虽然值还存在,但是该部分内存已经不在具有安全性,随时有可能被覆盖,这时很容易出现错误。
3、函数的线程安全:
是否可重入?是否带有线程共享的资源:全局变量、静态变量,堆内存。
多线程访问的情况下是否是安全的
对于一个函数是否安全的思考角度,有以下几个方向:
1、函数是否进行内存的非法访问?
申请的内存是否释放,否则造成内存泄漏?
是否存在野指针,悬浮指针的情况?
2、函数返回值的安全:
禁止返回局部变量的地址或者引用,因为在函数调用堆栈的时候栈帧的回退过程中,虽然值还存在,但是该部分内存已经不在具有安全性,随时有可能被覆盖,这时很容易出现错误。
3、函数的线程安全:
是否可重入?是否带有线程共享的资源:全局变量、静态变量,堆内存。
多线程访问的情况下是否是安全的