为什么EXC_坏_访问只发生在LLVM库中,而不发生在GNU库中? 几天前,我发现Oracle即时客户端与Excel BADIAccess不兼容LLVM C++库。因此,我将图书馆改为GNU C++库,每件事都有作用。

为什么EXC_坏_访问只发生在LLVM库中,而不发生在GNU库中? 几天前,我发现Oracle即时客户端与Excel BADIAccess不兼容LLVM C++库。因此,我将图书馆改为GNU C++库,每件事都有作用。,c++,exc-bad-access,C++,Exc Bad Access,今天,我意识到oracle客户端的错误可能是由返回局部变量引起的。当程序用LLVM C++库编译时,ExcBADBAccess就出来了。但是,我将库改为GNU C++库,向量可以推10,但不能返回10。我不知道为什么EXC_BAD_访问只发生在LLVM库中 LLVM(本地) GNU(本地) 您正在调用未定义的行为 您的程序在任何给定的执行过程中到底发生了什么并没有定义,而且编译器之间可能会有所不同。这显然就是这里正在发生的事情。很不幸,您的坏代码在GNU库中运行时没有出错。代码的图像没有用处,

今天,我意识到oracle客户端的错误可能是由返回局部变量引起的。当程序用LLVM C++库编译时,ExcBADBAccess就出来了。但是,我将库改为GNU C++库,向量可以推10,但不能返回10。我不知道为什么EXC_BAD_访问只发生在LLVM库中

LLVM(本地)

GNU(本地)
您正在调用未定义的行为


您的程序在任何给定的执行过程中到底发生了什么并没有定义,而且编译器之间可能会有所不同。这显然就是这里正在发生的事情。很不幸,您的坏代码在GNU库中运行时没有出错。

代码的图像没有用处,请用代码的文本版本替换。这不是兼容性问题-您的代码坏了。未定义的行为意味着任何事情都可能发生。在本例中,这意味着它在一种情况下崩溃,而在另一种情况下不崩溃。参见第17行的黄色警告?那是你的问题。试着阅读并理解它。我知道代码被破坏了,我知道EXC_BAD_ACCESS是什么意思。我只是想了解这两个库之间行为不同的原因。