启动一个新线程。
- (void)applicationDidFinishLaunching:(NSNotification *)aNotification 方法,使用
MyThread *thread1 = [[MyThread alloc] init] ;
[thread1 start] ;其中MyThread是NSThread的子类。
如果我在线程的main方法中运行一个空的for循环并退出,它会工作得很好。但是,只要我尝试使用NSString甚至NSAutoReleasePool这样的Cocoa API,我的程序就会因为进入调试器而挂起。
问题的根源可能是什么?
提示:我尝试在调试器中单步执行,但它有一次给我一个SIGBUS错误。可能会有什么内存访问问题?
发布于 2011-09-11 10:35:41
这个问题很棘手。我在main()方法中间声明了一个1MB的大型字符数组。编译器正在将此声明推送到已编译方法的顶部。不知怎么的,这个空间太大了,因此一旦进入main方法,程序就会立即崩溃。不幸的是,即使我在此声明之前插入了一条return语句,程序也会崩溃,因为编译器会将此声明推到最开始。我将数组声明更改为malloc(),然后程序运行。
https://stackoverflow.com/questions/7375010
复制相似问题