草庐IT

unsafe_guard

全部标签

c++ - 为什么 “strcat” 被认为是 “unsafe” ?

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:WhydoesMSVC++consider“std::strcat”tobe“unsafe”?(C++)这是我的代码:charsentence[100]="";char*article[5]={"the","a","one","some","any"};lexeme=rand()%4;//randomlexemestrcat(sentence,article[lexeme]);strcat(sentence,"");在MSVC++中调试时,它会给我这些警告消息:Warning1warningC4996:'st

C++ header guards 不会编译

在vs2010中无法使用header保护来编译任何代码。例如:#ifndefSIMPLE.H#defineSIMPLE.H#includeclassPlace{private:intm_xplace;intm_yplace;Place(){}public:Place(intx,inty):m_xplace(x),m_yplace(y){}voidMove(intx,inty);voidset_place(intx,inty){m_xplace=x,m_yplace=y;}intget_place_x(){returnm_xplace;}intget_place_y(){returnm_

c++ - std::lock_guard 有什么问题

我有简单的代码:第一个线程将std::strings推送到std::list,第二个线程弹出std::strings从这个std::list。所有std::list的操作都受到std::mutexm的保护。此代码将错误永久打印到控制台:"Error:lst.begin()==lst.end()"。如果我将std::lock_guard替换为构造m.lock()和m.unlock()代码将开始正常工作。std::lock_guard有什么问题?#include#include#include#include#includestd::mutexm;std::listlst;voidf2()

深入理解 go unsafe

学过C的朋友应该知道,有一种类型是指针类型,指针类型存储的是一个内存地址,通过这个内存地址可以找到它指向的变量。go虽然是一种高级语言,但是也还是给开发者提供了指针的类型unsafe.Pointer,我们可以通过它来直接读写变量的内存。正因为如此,如果我们操作不当,极有可能会导致程序崩溃。今天就来了解一下unsafe里所能提供的关于指针的一些功能,以及使用unsafe.Pointer的一些注意事项。内存里面的二进制数据表示什么?我们知道,计算机存储数据的时候是以二进制的方式存储的,当然,内存里面存储的数据也是二进制的。二进制的01本身其实并没有什么特殊的含义。它们的具体含义完全取决于我们怎么去

c++ - vim + C++ : insert a uuid in a guard clause

我正在尝试自动化文件注释标题。我一直在尝试弄清楚如何使用vim的autocmd将uuidgen命令的结果插入到我的header中。在页眉中,存在占位符文本,如下所示:#ifndef_UUID_#define_UUID_//Codegoeshere!#endif//_UUID_在.vimrc中填充_UUID_的自动命令行是:autocmdbufnewfile*.hexe"1,$s/_UUID_/".r!uuidgen."/g"问题出在r!uuidgen下。如何将shell命令执行的结果作为文本插入到autocmd行中?或者在vi替换命令中? 最佳答案

c++ - 是否可以根据作用域改变函数的行为?

我想创建类似于rust的东西unsafeC++中的作用域。我的想法是我有一些函数执行检查次数。例如:voidcheck(){if(...)throwexception(...);}voidfoo(){check();//dosomework}现在,我希望能够在不执行这些检查的情况下使用或(在不同的上下文中)调用函数foo()。理想情况下,它看起来像这样:foo();//callfooandperformchecksunsafe{foo();//callfoowithoutchecks}我的问题是,是否有可能在编译时实现这样的目标?是否可以通过check函数在它被调用的范围内以某种方式检

c++ - header guard 难题 - 已经在 .obj 问题中定义

我有一个类(A),它必须包含两个文件,X类和Y类。不幸的是,Y类还需要在其头文件中包含X类,因为构造函数将指向X类类型的指针作为参数.潜在的问题是会出现链接器错误?因为A类现在有两个X类的拷贝,一个它需要使用,一个来自Y类。在这种情况下,headerguards是没有用的。我的问题是-这纯粹是结构性问题还是有解决办法?我真的宁愿不在类Y的头文件中包含任何内容,以防我想在其他任何内容中包含它,但由于函数原型(prototype),是否有必要这样做? 最佳答案 如果您有以下情况:X.h#ifndefX_H__#defineX_H__cl

IDEA git报错 unsafe repository解决方法

闲来无事,更新Git,打开IDEA一看统统报错,百度半天大多都会给你说用gitconfig--global--addsafe.directory,git添加了新的目录安全限制,只需要打开你的用管理员身份运行cmd,跳转到项目目录输入gitconfig--global--addsafe.directoryC:\xxx\xxx\xxx 管理员身份运行cmd!管理员身份运行cmd!管理员身份运行cmd!如果不行尝试方法1:gitconfig--global--addsafe.directory"*"方法2:文件目录-右键-属性-安全-高级-所有者-更改为你的当前用户。方法3:找到安装目录下的git-

c# - 从 C# : should I pass StringBuilder or use unsafe code? 调用非托管函数

我有一个C#程序需要将char缓冲区传递给非托管函数。我发现了两种似乎工作可靠的方法,但我不确定应该选择哪一种。这是非托管函数的签名。extern"C"__declspec(dllexport)intgetNextResponse(char*buffer);第一个选项是将缓冲区定义为StringBuilder,如下所示。//atclasslevel...[DllImport("mydll.dll")]staticexternintgetNextResponse(StringBuilderbuffer);//inmainmethodbody...StringBuildersb=newSt

c# - 如果 C# 指针被认为是 "unsafe,",这是否意味着 C++ 指针也是 "unsafe"?

我正在用C#做一个项目,它可以从线性代数包中获益。我看过外面的那些,但我真的不想付钱,或者我发现它们不是很好。所以我决定自己写。我读到C++数组比C#数组快得多,但在C#中使用指针数组可以获得类似的性能,尽管它们被认为是“不安全的”。我很想知道C++指针有何不同,以及“不安全性”是否也适用于C++,或者它们是否是两个根本不同的东西。 最佳答案 C#(不安全)指针和C++(原始)指针都具有以下特征:它们允许您引用给定地址空间中的地址。它们允许您对它们执行简单的算术运算(加法和减法),涉及整数作为偏移量。它们允许您将它们指向的任何内容取