ios - 我可以在 iOS 上将 memcpy_s 与 ObjC 一起使用吗?

标签 ios objective-c memcpy

在 iOS 中是否有任何 memcpy 的替代品? 据我所知,memcpy 并不“安全”,建议的替代方案是“memcpy_s”

但是,在将 memcpy 替换为 memcpy_s 后,由于“架构 armv7 的 undefined symbol :”问题,代码无法编译。

我该如何解决这个问题?如何设置项目设置?任何帮助将不胜感激。

AsyncSocket.m 中的一些代码:

- (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);
    }
}

最佳答案

as I know, memcpy is not 'safe'

事实并非如此。对比一些真正不安全的stdlib函数,只有不能使用才是“不安全”。 memcpy() 将缓冲区长度作为其第三个参数,因此您不会冒缓冲区溢出的风险;您还可以检查源指针和目标指针,以避免取消引用 NULL 等。

memcpy_s() 是 Microsoft 的扩展,因此,它只能在 Windows 上使用(幸运的是)。如果您需要 memcpy(),请使用它,并且不要尝试用特定于供应商的东西替换标准函数(尤其是当该供应商是 Microsoft 时)。

关于ios - 我可以在 iOS 上将 memcpy_s 与 ObjC 一起使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20716402/

相关文章:

ios - 无法转换 FBSDKGraphRequestHandler 类型的值

ios - UIAlertView 在 Swift 中不工作

iphone - 拍摄快照时,显示出很少的白色背景颜色

ios - ios 如何在应用程序关闭时接收本地通知

与 memcpy 连接

c++ - Memcpy 导致 block 释放两次错误

ios - iPad 上的默认图标 - 适用于 iPhone 应用程序

ios - Watchkit 到 watchkit 通信#Watchkit 扩展

c - memcpy重叠不可理解

IOS:如何在 UIMapView 上显示标签文本值