2017-06-01 45 views
0

我从第三方开发者,我不能透露调用从编译的C库函数。问题是,函数返回时,应用程序使用Xcode 8建立了一个错误,但使用Xcode 7时工作正常。我在我的应用程序中调用了.mm文件中的库函数。我知道这可能是由第三方库引起的,但Xcode版本中可能会对此产生什么影响?我不知道从哪里开始,也不能在这里粘贴代码。.mm文件工作,如果建立在Xcode的7,但不是在Xcode的8

+0

你检查环境?所有配置文件,初始化调用等都是真的一样吗?你是否检查过该函数是否用相同的参数调用? – clemens

回答

0

我想通了这个解决方法,但仍然不知道为什么它的行为这样。 我发现错误的原因是Optimization Level。在XCode 8中,我需要设置优化级别才能工作,否则失败。

失败

具体的源代码是这样的:

char subject[256]; 
memset(&subject, 0x00, sizeof(subject)); 
strcpy(subject, "Test"); 
mail.emailSubject = subject 

我换成上面的代码与此:

mail.emailSubject = (char*)"Test"; 

如果任何人都可以解释,请随意。谢谢!

0

第一个代码块被分配一个堆栈字符数组,然后将其分配给哪个Emailsubject的我不知道是什么类型的对象。如果它不复制堆栈内存,只是简单地分配它,那么当函数返回堆栈时,内存将被释放,并且emailSubject将保留脏内存。

在分配“测试”,编译器将分配“测试”作为后函数返回不释放一个静态变量。

希望它有帮助。