工作C++;当程序在不同的计算机上运行时,两台Mac都会出错 我在Snow Leopard中用C++编写的程序(OXXV0.6)在我的计算机上正常运行。当我将这个程序复制到另一台运行Leopard(OSX v10.5)和Ubuntu的Mac电脑上的文件夹中并运行它时,程序会出错。突然,没有一个变量和对象被正确地实例化,我在那个点上应该并没有数据的地方得到了垃圾数据

工作C++;当程序在不同的计算机上运行时,两台Mac都会出错 我在Snow Leopard中用C++编写的程序(OXXV0.6)在我的计算机上正常运行。当我将这个程序复制到另一台运行Leopard(OSX v10.5)和Ubuntu的Mac电脑上的文件夹中并运行它时,程序会出错。突然,没有一个变量和对象被正确地实例化,我在那个点上应该并没有数据的地方得到了垃圾数据,c++,macos,unix,segmentation-fault,osx-leopard,C++,Macos,Unix,Segmentation Fault,Osx Leopard,有没有人遇到过类似的问题,或者知道可能的原因是什么 谢谢。运行它,看看它报告了什么错误。未初始化的变量。这是未定义行为的结果。发布代码可能会有所帮助。这很常见。在第一种情况下,您很可能有一个被忽略的内存泄漏(但无论如何都是一个问题)。请注意,问题最有可能出现在代码中,它与平台无关。你知道如何使用调试器吗?你能提供更多的信息吗,比如它在哪里出错,或者gdb回溯?不同系统上的执行应该不同,因为环境不完全相同;您放置可执行文件的位置、程序使用的文件集、权限、环境变量。。。这可能导致segfault的一

有没有人遇到过类似的问题,或者知道可能的原因是什么


谢谢。

运行它,看看它报告了什么错误。

未初始化的变量。这是未定义行为的结果。发布代码可能会有所帮助。这很常见。在第一种情况下,您很可能有一个被忽略的内存泄漏(但无论如何都是一个问题)。请注意,问题最有可能出现在代码中,它与平台无关。你知道如何使用调试器吗?你能提供更多的信息吗,比如它在哪里出错,或者gdb回溯?不同系统上的执行应该不同,因为环境不完全相同;您放置可执行文件的位置、程序使用的文件集、权限、环境变量。。。这可能导致segfault的一个例子是:您有一个指向系统中不存在的文件的指针,您打开该文件,您不检查该文件是否存在,因此指针为空,您使用该文件。我的理解是,默认情况下,在Snow Leopard上创建的可执行文件不一定在Leopard上运行;您必须明确声明希望将Leopard作为您的操作系统。我认为Mac二进制文件根本不会在非Mac操作系统上执行。