草庐IT

c++ - Valgrind 显示内存泄漏且 main 为空,不包含 header

卢本图15.10我的项目存在内存泄漏。我可以找到它们,所以我清理了我的main.cpp文件,现在它看起来像这样:intmain(){return0;}当我使用命令检查内存时:valgrind--leak-check=full--show-leak-kinds=all./MyProgram>log1.txt2>&1我遇到了这些错误:==5219====5219==LEAKSUMMARY:==5219==definitelylost:0bytesin0blocks==5219==indirectlylost:0bytesin0blocks==5219==possiblylost:728by

c++ - 在 main 之前立即调用一个函数

是否可以注册一个在输入main之前立即运行的函数?我知道所有全局对象都是在进入main之前创建的,所以我可以将代码放在全局对象的构造函数中,但这并不能保证任何特定的顺序。我想做的是将一些注册代码放入构造函数中,但唉,我不知道该放什么:)我猜这是高度系统特定的? 最佳答案 如果您正在使用gcc,您可以在函数上使用constructor属性使其在main之前被调用(参见documentation了解更多详情)。constructordestructorTheconstructorattributecausesthefunctiontob

c++ - main.cpp 是必需的吗?

我试图用cmake编译一个程序,最后我删除了我的main.cpp文件,我刚刚将其复合到另一个文件中,该文件包含我的项目名称(即,我只是将主要功能剪切并粘贴到该文件中)。问题是我得到了main.cpp未发现错误,不确定是否在C++中一个名为main.cpp的文件是必需的,或者我可以拥有一个包含函数main的不同标题的文件吗?编辑我应该注意,我已经删除了对main的任何规范并重新编译了这个程序。 最佳答案 不,您不需要名为main.cpp的文件。除非您正在构建应用程序,否则不需要包含main()的文件。也就是说,如果您只是构建函数库或独

c++ - main 中静态类变量的初始化

我在类中有一个静态变量。我正在全局范围内初始化它,它工作正常。但是当我尝试在主链接器中初始化时抛出错误。为什么会这样。classMyclass{staticintiCount;};intmain(){intMyclass::iCount=1;}并且在全局范围内为什么我必须指定变量类型喜欢intMyclass::iCount=1;在我的类里面,我将iCount定义为整数类型,为什么不呢。Myclass::iCount=1;in//Globalscope 最佳答案 C++标准的$9.4.2/7部分说,Staticdatamembersa

c++ - 程序执行不是从 main() 开始的

我用C开发了很多年,直到现在才发现程序可以在main()函数之前执行代码。这是一个代码示例intgenerateNum(){//Somemaliciouscodehere...return5;}staticintsomeArray[]={generateNum(),generateNum()}intmain(){//Somecodehere...}函数generateNum()在main()之前被调用了两次。我的问题是谁调用了generateNum()?我知道在Windows上是crtexe()这种行为在不同平台上是否标准化:Windows/Linux/Android/iOS?如何获得

c++ - int main(int, char const* const*) 格式正确吗?

根据C++11标准,下列程序是否为良构且可移植的C++?intmain(intargc,charconst*const*argv){} 最佳答案 没有。在纯可移植C++程序中,argv参数(如果存在)没有const修饰符。编辑:请参阅C++11标准草案第3.6.1.2节,其中(在我之前的版本中)指出:Animplementationshallnotpredefinethemainfunction.Thisfunctionshallnotbeoverloaded.Itshallhaveareturntypeoftypeint,buto

c++ - 如何找到程序的 main(...) 函数?

我目前正在将一个包含数百个代码文件和依赖项的项目移植到几个第三方库到MacOs。我终于到了程序编译没有警告或错误的地步,但它似乎没有执行我自己的主要功能。相反,它似乎执行了一些似乎属于第三方的其他主要功能。此函数将一些诊断数据写入控制台并随后退出:(gdb)continueCurrentlanguage:auto;currentlyc++////Thisisanautomaticallygeneratedfile.//Donotedit.//constunsignedshortexpTable[]={0x3c00,0x3c00,0x3c00,0x3c00,0x3c00,0x3c00,0

c++ - 在没有 main() 的情况下运行的 C 或 C++ 程序是否违反标准?

我参与了与我的一位同事的讨论,他说可以在没有main的情况下在C和C++中“运行程序”,并且在托管环境中也是如此。我说过,根据标准,这是完全不正确的。然后他让我看this提到的链接Inseveralyears,anentrywassubmittedthatwassopatentlyabsurdthatitrequiredanewdefinitionofsomeoftherulesforthenextyear.Thisisregardedasahighhonor.Anexampleistheworld'sshortestself-reproducingprogram.Theentrywa

c++ - 在 C++ 中的 main() 之前初始化 vector

我希望能够在main之前初始化大小为“SIZE”的vector。通常我会做staticvectormyVector(4,100);intmain(){//HereIhaveavectorofsize4withalltheentriesequalto100}但问题是我想将vector的第一项初始化为某个值,将另一个初始化为另一个值。有没有简单的方法来做到这一点? 最佳答案 试试这个:staticintinit[]={1,2,3};staticvectorvi(init,init+sizeofinit/sizeofinit[0]);另请

c++ - main() 之前的堆栈溢出异常

这是我在stackoverflow上的第一个问题,所以我会尽量具体一点。我在论坛上搜索了任何相关主题,但没有成功。不管怎样,这里是:我正在使用VisualStudio2005。我遇到了堆栈溢出异常:IHR.exe中0x775715de处未处理的异常:0xC00000FD:堆栈溢出。,在尝试调试我的项目时。调用堆栈没有帮助,因为它在ntdll.dll处停止,甚至在进入main()函数之前。起初我怀疑这可能是编译设置的问题,但是当我将在我的计算机上编译的可执行文件发送到第二台计算机时,它可以正常运行,只是不会在我的机器上运行。同样的情况反过来发生,我在第二台计算机上编译了可执行文件,它可以