草庐IT

Wmaybe-uninitialized

全部标签

c++ - g++ 编译器中的 “Uninitialized use” 警告

我正在使用警告级别为-Wall-Wextra的g++并将警告视为错误(-Werror)。现在我有时会收到错误消息“变量可能在此函数中未初始化地使用”。“有时”是指我有两个独立的编译单元,它们都包含相同的头文件。一个编译单元编译没有错误,另一个给出上述错误。头文件中的相关代码如下。由于函数很长,我只复制了下面的相关部分。准确的错误是:'cmpres'maybeuseduninitializedinthisfunction我用*标记了错误行下面。for(;;){intcmpres;//*while(b=band(cmpres=cmp(c,pivot))>=0){if(cmpres==0):

c++ - 无论如何有一个 valgrind 消息 "Conditional jump or move depends on uninitialized value"可以是所谓的 'false positive'

我在这里找到的大多数问题都提供一段代码,并由指出实际错误的人回答。我的问题是关于一般未初始化值的条件跳转。我可以理解,如果确定此分配仅完成一次并且在程序的生命周期内可能需要,则不必在程序结束时清理一block内存。据我所知,当程序终止时,GType系统会留下大量未释放的内存。这些未释放的block可以被视为“误报”。但是“有条件的跳跃或移动未初始化的值”会是误报吗?我唯一能想出的是有人通过读取随机地址来实现(坏的)随机函数(其中随机地址本身是棘手的部分;)。另一个例子可能是硬件映射到内存的一部分然后被读取,但这主要是由驱动程序而不是由普通用户应用程序完成的。是否有任何其他示例(最好是C

c++ - 为什么 int a; a = std::max(a, x) 不发出 "uninitialized"警告

考虑以下代码:#include#include#includeintmain(){std::vectorv{{1,2,3}};inta;std::cout随着现代编译器的发展,现在对愚蠢的程序员错误保持警惕,他们跟踪单元化变量。然而,这段C++代码让他们感到困惑。到目前为止,我得到以下结果:(1)(2)g++5.3.1clang++3.7✔SolarisStudio12.5✔如您所见,CLang和solstudio只能检测情况(1)并忽略情况(2),而g++会忽略两者。在情况(2)中是否存在检测它的并发症?为什么g++在这方面如此糟糕?我使用的编译器选项:$g++-5-std=c++1

linux - Gfortran 警告提示 "Wmaybe-uninitialized"

我最近正在开发一个相当长的Fortran代码。我使用的编译器是Opensuse13.1(64位)上的gfortran4.8.1。但是,当我使用-O2或-O3选项编译代码时,我收到了很多关于“-Wmaybe-uninitialized”的警告。我设法将代码减少到最小的工作示例,如下所示。在main.f90中programmainusemodTestimplicitnonereal(kind=8),dimension(:,:),allocatable::outputreal(kind=8),dimension(:,:,:),allocatable::inputallocate(input(

c - Valgrind, "uninitialized value(s)"错误

在我的C程序中,我使用malloc()分配内存,与calloc()相比,不初始化内存,它可能仍然包含垃圾。大多数情况下,在分配上下文中,我不会对malloc()分配的内存进行任何更改。(例如,在初始化包含缓冲区的结构的函数中,我不会更改缓冲区的内存,但稍后会更改)。Valgrind给了我很多这些错误:条件跳跃或移动取决于未初始化的值使用大小为4的未初始化值我确定在这些情况下永远不会从未初始化的内存中读取数据。我应该忽略它们还是在分配时初始化内存更好?如果我应该忽略它们,如何在Valgrind中停用此错误消息?示例1:==4253==Conditionaljumpormovedepend

c++ - 在折叠表达式中使用 lambda 时出现 "Uninitialized captured reference"错误 - clang 与 gcc

考虑以下代码:templateautofold_left(F&&f,X0&&x0,X1&&x1,Xs&&...xs){autoacc=f(x0,x1);return([&](autoy){returnacc=f(acc,y);}(xs),...);}conststd::stringa{"a"},b{"b"},c{"c"},d{"d"},e{"e"};constautocat=[](autox,autoy){return"("+x+","+y+")";};调用和打印fold_left(cat,a,b,c)时,g++7和clang++5都输出:((a,b),c)调用和打印fold_left

c++ - 为什么 std::uninitialized_move 不存在?

C++11标准库包括以下相关算法:templateForwardIteratoruninitialized_copy(InputIteratorfirst,InputIteratorlast,ForwardIteratorresult);templatevoiduninitialized_fill(ForwardIteratorfirst,ForwardIteratorlast,constT&x);templateOutputIteratorcopy(InputIteratorfirst,InputIteratorlast,OutputIteratorresult);templatev

python - FailedPreconditionError : Attempting to use uninitialized in Tensorflow

我正在处理TensorFlowtutorial,它使用“奇怪”的格式上传数据。我想对数据使用NumPy或pandas格式,以便可以将其与scikit-learn的结果进行比较。我从Kaggle获得数字识别数据:https://www.kaggle.com/c/digit-recognizer/data.这里是TensorFlow教程中的代码(运行良好):#Stufffromtensorflowtutorialimporttensorflowastfsess=tf.InteractiveSession()x=tf.placeholder("float",shape=[None,784])

c++ - How to get around GCC ‘*((void*)& b +4)’ may be used uninitialized in this function warning while using boost::optional

我有类似下面的代码:#include::boost::optionalgetitem();intgo(intnr){boost::optionala=getitem();boost::optionalb;if(nr>0)b=nr;if(a!=b)return1;return0;}当使用GCC4.7.2和Boost1.53进行编译时,使用以下命令:g++-c-O2-Wall-DNDEBUG发出以下警告:13:3:warning:‘((void)&b+4)’maybeuseduninitializedinthisfunction[-Wmaybe-uninitialized]显然,根本问题在

php - 什么原因导致 : "Notice: Uninitialized string offset" to appear?

这个问题不太可能帮助任何future的访客;它仅与一个小地理区域、一个特定时刻或一个非常狭窄的情况相关,而这些情况通常不适用于互联网的全局受众。如需帮助使这个问题更广泛地适用,visitthehelpcenter.关闭9年前。我有一个用户填写的表单,表单上有多个相同的字段,例如“项目名称”、“项目日期”、“类别”等。根据用户提交的表单数量,我的目标是:遍历表单的数量创建单独的SQL插入语句但是,PHP向我抛出了一个我似乎不明白的通知:注意:Notice:Uninitializedstringoffset:1...dataPasser.phponline90PHP$myQuery=arr