此功能可能出现哪些错误或不正确?
What could be wrong or incorrect with this function?
可能的重复:
可以在其范围之外访问局部变量的内存吗?
double* weird( double a, double b )
{
double c;
c = pow( a + b, 0.5 );
return &c;
}
对于你们大多数人来说,这可能是微不足道的,但我看不出这里会出什么问题。
这是非常错误的,因为您返回的是指向局部变量的指针。
当&c
返回时,其作用域为函数的变量c
将被销毁weird
,从而为您提供一个指向内存中随机区域的指针。 这是未定义的行为。
您在函数的作用域中c
声明了一个局部变量,退出函数后该变量不再有效,因此指向该变量的指针之后没有任何意义。
正如其他人所说。
变量除外static
在方法中声明或在大括号之间声明{}
具有局部作用域。一旦你离开它,变量就会被销毁。
如果您仍然想要它,请使用静态
static double c;
相关文章:
- 失败,出现错误 87:参数不正确.如何判断哪个参数不正确?
- 宏定义不正确没有错误
- rpmbuild check-rpath 报告错误,指出路径不是绝对的,不正确的
- 对从引用到 std::reference_wrapper 或编译器错误的隐式转换的理解不正确?
- "this" Lambda 捕获的是不正确的。海湾合作委员会编译器错误?
- 对分段错误的理解不正确
- 收到错误 87,安装程序的参数不正确DiGetDeviceInterfaceDetail
- Visual Studio 2017 在外部"C"中使用模板时出现不正确的错误
- 将 SFINAE 上下文中不正确的模板实例化的硬错误转变为软错误
- 测试整数是否在范围内时,逻辑错误和不正确输出
- 带有绝对路径的LoadLibrary返回不正确的HMODULE,没有任何错误
- unordered_map不正确使用或错误
- memcpy错误,长度不正确
- 此功能可能出现哪些错误或不正确?
- 由于转换错误而导致的过载/专业不正确
- 我正在尝试遍历 20x20 网格并计算产品,但总是得到不正确的结果。你能帮忙发现我的错误吗?
- LoadLibraryEx错误87(参数不正确)
- 错误:隐式删除,因为默认定义格式不正确(结构向量)
- 使用 qsort() 时对包含C++字符串的类进行不正确/错误的排序
- 没有错误,但输出不正确.可能存在指针问题