我可以在iOS上使用带ObjC的memcpy_吗?
iOS中是否有memcpy的替代品? 据我所知,memcpy并不“安全”,建议的替代方案是“memcpy_'s” 但是,在用memcpy_替换memcpy之后,由于“架构armv7的未定义符号”问题,代码无法编译 我如何解决这个问题?如何设置项目设置?任何帮助都将不胜感激 AsyncSocket.m中的一些代码:我可以在iOS上使用带ObjC的memcpy_吗?,ios,objective-c,memcpy,Ios,Objective C,Memcpy,iOS中是否有memcpy的替代品? 据我所知,memcpy并不“安全”,建议的替代方案是“memcpy_'s” 但是,在用memcpy_替换memcpy之后,由于“架构armv7的未定义符号”问题,代码无法编译 我如何解决这个问题?如何设置项目设置?任何帮助都将不胜感激 AsyncSocket.m中的一些代码: - (CFIndex)readIntoBuffer:(UInt8 *)buffer maxLength:(CFIndex)length { if([_partialReadBu
- (CFIndex)readIntoBuffer:(UInt8 *)buffer maxLength:(CFIndex)length
{
if([_partialReadBuffer length] > 0)
{
// Determine the maximum amount of data to read
CFIndex bytesToRead = MIN(length, [_partialReadBuffer length]);
// Copy the bytes from the buffer
memcpy(buffer, [_partialReadBuffer bytes], bytesToRead);
// Remove the copied bytes from the buffer
[_partialReadBuffer replaceBytesInRange:NSMakeRange(0, bytesToRead) withBytes:NULL length:0];
return bytesToRead;
}
else
{
return CFReadStreamRead(_theReadStream, buffer, length);
}
}
正如我所知,memcpy并不“安全”
事实并非如此。与一些真正不安全的stdlib函数相比,只有当您不能使用它时,它才是“不安全的”memcpy()
将缓冲区长度作为其第三个参数,这样就不会有缓冲区溢出的风险;您还可以检查源指针和目标指针,以避免取消引用NULL
,等等
memcpy_s()
是Microsoft的一个扩展,并且是这样的,它只在Windows上可用(幸运的是)。如果您需要memcpy()
,请使用它,不要试图用特定于供应商的东西替换标准函数(特别是如果该供应商是Microsoft的话)。请在使用memcpy的地方发布一些代码。在此处显示一些代码……您可以尝试使用strcpy()
@user3007735:strcopy()
复制以NUL结尾的字符串,无法替换复制给定字节数的memcpy
。我想知道uuu内置uuu memcpy_chk是否安全。