【发布时间】:2019-03-13 11:56:01
【问题描述】:
我正在尝试读取 TCP 套接字连接中的长字符串。
对于读取短长度的字符串,它工作正常。但是当我尝试发送长长度的 base64 编码图像时。它崩溃了,我试图增加到maxReadLength = 10000,但它仍然无法正常工作。
读取传入消息
private func readAvailableBytes(stream: InputStream) {
let buffer = UnsafeMutablePointer<UInt8>.allocate(capacity: maxReadLength)
while stream.hasBytesAvailable {
let numberOfBytesRead = inputStream.read(buffer, maxLength: maxReadLength)
if numberOfBytesRead < 0 {
if let _ = inputStream.streamError {
break
}
}
❌ Crashing in below line ???? ❌
if let reciviedMsg = String(bytesNoCopy: buffer,
length: numberOfBytesRead,
encoding: .ascii,
freeWhenDone: true)
{
delegate?.scoktDidRecivceNewMessagew(message: reciviedMsg)
}
}
}
错误
malloc: *** error for object 0x101890c00: pointer being freed was not allocated
*** set a breakpoint in malloc_error_break to debug
【问题讨论】: