c - 下面的代码可能会出现什么问题?

标签 c multithreading buffer buffer-overflow

char* function (char* s)
{
    char buffer[1024];
    strcpy(buffer,s);
    buffer[strlen(s)-1]='\n';
    return buffer;
}

对于这个函数,我认为有三件事可能会导致此代码失败:

  1. 如果 s 大于 buffer,strcpy 会失败吗?
  2. 如果 s 为 null,那么函数中的第三行将会失败?
  3. 在多线程情况下这段代码会发生什么?它只会影响strcpy吗? (函数中的第二行)

你觉得怎么样? 还有更多可能失败的事情吗?我的假设之一是错误的吗?

谢谢

最佳答案

就多线程而言,如果s指向的内存被另一个线程修改或变得无效(例如被另一个线程释放),则该函数将无法正常工作。

关于c - 下面的代码可能会出现什么问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16123997/

相关文章:

正确使用相同操作和不同类型的回调

c# - 基于自定义属性的 IHostBufferPolicySelector

mysql - 在 C 中关闭连接后返回函数中 MySQL 查询的结果

c - 在 C 中使用 fseek() 在文件中的特定位置插入数据

c - 打开 MPI Waitall() 段错误

java - Runnable 的线程在执行后不会被销毁

java - Android Activity 创建我的线程的多个实例

multithreading - 在 Dart/Flutter 中使用 GPU 而非图形

c - memmove 不复制缓冲区的所有内容 - C

Python(PyCharm) Selenium 跳过行代码