草庐IT

行为不当

全部标签

c++ - 有两个具有不同值的指针引用同一个对象是未定义的行为吗?

注意:如果在读完这个问题后您认为“这怎么可能发生”,那没关系。如果您想保持开放的心态,您可以遵循问题后的一些要点,这些要点说明了这是如何发生的以及为什么这样做有用。请记住,这只是一个问题,而不是关于这些主题的教程。这些评论已经有足够的噪音,而且很难跟上。如果您对这些主题有疑问,请将它们作为问题发布在SO而不是评论中,我将不胜感激。问题:如果我有一个int类型的对象存储在c指向的地址int*c=/*allocateint(returnsuniqueaddress)*/;*c=3;由两个指针a和b引用:int*a=/*createpointerto(*c)*/;int*b=/*create

c++ - "Return value optimization"会导致未定义的行为吗?

阅读this一位回复者指出的维基百科文章针对以下问题:C++Copyconstructor,temporariesandcopysemantics我遇到了这条线Dependingonthecompiler,andthecompiler'ssettings,theresultingprogrammaydisplayanyofthefollowingoutputs:这不符合未定义行为的条件吗?我知道这篇文章说Dependingonthecompilerandsettings但我只想清除它。 最佳答案 不,这不是未定义的行为。未定义的行为

c++ - 奇怪的 cout 行为

我在Ubuntu上编译了一个为Windows开发(并在Windows上运行)的程序。在Ubuntu上,我看到这段代码:strings=values_[9];cout产生这个输出:highxigh第二行的预期输出是“highx”。我知道values_[9]的值最初是从一个文件(写在Windows上)中读取的。打印其他字符串似乎工作正常。这是怎么回事? 最佳答案 运行命令,其输出通过cat-A进行管道传输。可能s的值,或者endl产生的输出给你一个'\r'字符,它通常将光标发回到行首。编辑:进一步思考,杂散的'\r'几乎肯定在s中,而不

c++ - 这个指针上的 const_cast 是未定义的行为吗?

在另一个问题中,我遇到了这段代码:RealStatData::mean(Realtrim)const{//trim,punnotintendedconst_cast(*this).items.sort();//trim}cppreference在他们的page上也有一个例子:structtype{type():i(3){}voidm1(intv)const{//this->i=v;//compileerror:thisisapointertoconstconst_cast(this)->i=v;//OK}inti;};除了为什么这会实用这一显而易见的问题之外,它不安全吗?创建的对象是否

c++ - 在 C++ 中检查数字是否为奇数。代码的奇怪行为

我是一名计算机科学助教,我的一个学生提交了以下代码来检查整数是奇数还是偶数:intis_odd(inti){if((i%2==1)&&(i%2==-1));else;}令人惊讶的是(至少对我而言)这段代码给出了正确的结果。我测试了高达100000000的数字,老实说,我无法解释为什么这段代码会这样运行。我们正在使用gccv6.2.1和c++我知道这不是一个典型的问题,但我希望能找到一些帮助。 最佳答案 无论您的编译器实际发生了什么,在不返回任何内容的情况下从函数末尾流出是未定义的行为。请注意,如果您将-O3传递给GCC,或使用Cla

OpenAI DALL-E 3 模型存生成“不当内容”漏洞,一微软员工上报后反遭“封口令”

2月2日消息,微软软件工程部门经理 ShaneJones 日前发现OpenAI 旗下 DALL-E3模型存在漏洞,据称能够生成一系列NSFW 不当内容,在上报相关漏洞后,ShaneJones却被下达“封口令”,不过该员工最终还是选择向外界披露相关漏洞。▲图源 ShaneJones对外披露的报告IT之家注意到,ShaneJones在去年 12 月通过独立研究发现OpenAI 文字生成图片的 DALL-E3 模型存在一项漏洞,能绕过 AI 护栏(AIGuardrail)生成一系列 NSFW 不当内容。之后ShaneJones将漏洞曝光上报微软及 OpenAI,并在领英上发布公开信,声称相关漏洞会对

【踩坑指南】线程池使用不当的五个坑

线程池是Java多线程编程中的一个重要概念,它可以有效地管理和复用线程资源,提高系统的性能和稳定性。但是线程池的使用也有一些注意事项和常见的错误,如果不小心,就可能会导致一些严重的问题,比如内存泄漏、死锁、性能下降等。最后文末还有免费红包封面可以领取,回馈给各位读者朋友。本文将介绍线程池使用不当的五个坑,以及如何避免和解决它们,大纲如下:坑一:线程池中异常消失线程池执行方法时要添加异常处理,这是一个老生常谈的问题,可是直到最近我都有同事还在犯这个错误,所以我还是要讲一下,不过我还提到了一种优雅的线程池全局异常处理的方法,大家可以往下看。问题原因@Testpublicvoidtest()thro

STM32 定时器配置不当导致误差(精度)偏大的问题发现与解决

通用定时器TIM2/3/4/5,PWM输出1Khz的波形一开始初始化代码如下:voidMX_TIM2_Init(void)//1kHz{TIM_ClockConfigTypeDefsClockSourceConfig={0};TIM_MasterConfigTypeDefsMasterConfig={0};TIM_OC_InitTypeDefsConfigOC={0};htim2.Instance=TIM2;htim2.Init.Prescaler=170;htim2.Init.CounterMode=TIM_COUNTERMODE_UP;htim2.Init.Period=1000-1;ht

c++ - c++构造函数的奇怪行为

我正在测试这段代码,想知道为什么它在编译时没有失败?。我正在使用c++11和g++4.7.2。我的生产代码有类似的结构,它在运行时出错,然后我发现我正在用错误的参数类型构造类。#include#includetypedefstd::vectorWord;classData{public:constWord&word;Data(Wordw):word(w){}};classBase{constData&data;public:Base(constData&d):data(d){}~Base(){}};classWork:publicBase{public:Work(constData&d

c++ - 限制未定义行为引起的困惑?

根据我的阅读理解,未定义行为是在编译时为编译器留下几个不同的替代方案的结果。然而,这是否意味着如果遵循严格的编码实践(比如将每个赋值和每个相等放在一个单独的语句中,适当的调试和评论)那么它不应该在寻找未定义的来源方面造成重大问题-行为。此外,对于出现的每个错误,如果您识别代码,您应该知道可以使用哪些语句来代替该特定语句,对吗?编辑:我对您编写了您不想编写的代码的地方不感兴趣。我对按数学逻辑合理的代码无法运行的示例感兴趣。此外,我认为“良好的编码习惯”是每隔几行提供大量信息的注释、适当的缩进和定期调试转储。 最佳答案 未定义的行为不一