对象0x7c15bad4的错误:释放的对象的校验和不正确-对象可能在释放后被修改



我正在处理套接字并向服务器写入一些数据。当它第一次连接到服务器时,一切都很好。但当它第二次写入,有时是第三次写入时,它会崩溃并出现错误:

"malloc: *** error for object 0x7c15bad4: incorrect checksum for freed
object - object was probably modified after being freed.
*** set a breakpoint in malloc_error_break to debug"

它在以下线路上崩溃:

var response:NSString = NSString(format: "%@",dataString)
var data:NSData = NSData(data: response.dataUsingEncoding(NSASCIIStringEncoding)!)
data.getBytes(&socket.sharedInstance.byteData)
socket.sharedInstance.outputStream.write(byteData, maxLength: data.length)

大部分在最后一行。我已经全局声明了变量。我不知道发生了什么。我添加了符号断点,但没有成功。我使用的是XCode 6.0和Swift。

进一步调查显示:

(36729,0xb0115000) malloc: protecting edges
(36729,0xb0115000) malloc: enabling scribbling to detect mods to free blocks
(36729,0xb0115000) malloc: purgeable zone does not support guard pages
(36729,0xb0115000) malloc: *** mach_vm_map(size=8388608) failed (error code=3)
*** error: can't allocate region securely
*** set a breakpoint in malloc_error_break to debug

你能试试这个代码吗:

var response:NSString = NSString(format: "%@",dataString)
var data:NSData = NSData(data: response.dataUsingEncoding(NSASCIIStringEncoding)!)
socket.sharedInstance.outputStream.write(UnsafePointer<UInt8>(data.bytes()) , maxLength: data.length)

认为字节数据可能没有用正确的大小初始化。

最新更新