C++ 中的不安全是什么意思?

发布于 2024-12-21 03:56:13 字数 402 浏览 1 评论 0原文

可能的重复:
为什么 strtok() 被认为不安全?

我刚刚注意到一条警告(使用 Visual Studio )strtok 不安全,而 strtok_s 则不安全。为什么不安全,什么不安全?

我的问题的第一部分在此处得到了解答,但是不安全的含义是什么?与之相关的问题和可能出现的问题?

Possible Duplicate:
Why is strtok() Considered Unsafe?

I have just noticed a warning (using Visual Studio) that strtok is unsafe, and strtok_s is not. Why is it unsafe and what is unsafe?

First part of my question is answered here but what is the meaning of unsafe and what are the problems and possible problems related to it?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

牛↙奶布丁 2024-12-28 03:56:13

strtok 不是线程安全的。如果两个或多个线程同时调用strtok,结果将是不确定的。我在这里复制另一位用户 Jonathan Leffler 的回答:

请注意,strtok() 在处理输入时会销毁它。这是
也不是线程安全的,并且你必须确保没有其他函数
您从解析器调用的函数使用 strtok(),并且没有函数
调用解析器使用 strtok()。函数的条件
打电话通常不会太繁重;不过,在库代码中,第二个
条件(没有调用函数也使用 strtok())不是
可执行。

对这个问题的答复:处理C中的输入

strtok is not thread-safe. If two or more threads call strtok at the same time, the results will be undefined. I am reproducing here an answer by another user, Jonathan Leffler:

Be aware that strtok() destroys its input as it processes it. It is
also not thread-safe, and you have to be sure that no other function
that you call from your parser uses strtok(), and that no function
that calls your parser uses strtok(). The condition on functions
called is usually not too onerous; in library code, though, the second
condition (no calling function also using strtok()) is not
enforceable.

The response was given to this question: Dealing with input in C

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文