草庐IT

单周期

全部标签

c++ - const char * 值生命周期

这个问题在这里已经有了答案:Canalocalvariable'smemorybeaccessedoutsideitsscope?(20个答案)关闭7年前。编辑:重复标记中的链接问题已经回答了为什么这个问题中的代码有效的问题。关于字符串文字生命周期的问题在这个问题的答案中得到了回答。我试图了解constchar*指向的字符串如何以及何时被释放。考虑:constchar**p=nullptr;{constchar*t="test";p=&t;}cout离开内部范围后,我希望p成为指向constchar*的悬空指针。但是在我的测试中它不是。这意味着即使在t超出范围之后,t的值实际上仍然有效

c++ - 循环内声明的生命周期

我有一个循环如下while(1){inti;}i是否在每次循环发生时都被销毁并在堆栈上重新创建? 最佳答案 理论上,它会被重新创建。在实践中,出于优化原因,它可能会保持事件状态并重新初始化。但从您的角度来看,它会被重新创建,并且编译器会处理优化(即,只要它是pod类型,就将其保留在最内层的范围内)。 关于c++-循环内声明的生命周期,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/

c++ - 您如何在没有嵌套作业对象的情况下可靠地控制子流程的生命周期?

MSDNpageonJobObjects解释:Aprocesscanbeassociatedwithonlyonejob.Jobscannotbenested.TheabilitytonestjobswasaddedinWindows8ConsumerPreviewandWindowsServer8Beta.不幸的是,这似乎正是我所需要的。我正在处理这样的进程树:server.exe|+--+utility.exe|+--+launcherA.exe|||+--+programA.exe|||+--+subProcessA.exe|+--+launcherB.exe|+--+progr

c++ - 在现代 x86_64 CPU 上,AVX/SSE 求幂需要多少个时钟周期?

现代x86_64CPU上的AVX/SSE求幂需要多少个时钟周期?我是关于:pow(x,y)=exp(y*log(x))即exp()和log()AVXx86_64指令都需要特定的已知周期数吗?exp():_mm256_exp_ps()日志():_mm256_log_ps()或者循环数可能会根据指数级而变化,是否有最大循环数可以消耗指数? 最佳答案 x86SIMD指令集(即不是x87),至少到AVX2,不包括SIMDexp、log或powpow(x,0.5)除外,它是平方根。然而,有一些SIMD数学库是根据具有这些函数(以及其他函数)的

c++ - chrono::steady_clock 代表和周期类型是如何确定的?

chrono::steady_clock由4种成员类型组成:rep,period,duration,和timepoint.chrono::steady_clock::duration是chrono::duration.chrono::steady_clock::period是ratio.chrono::steady_clock::duration的类型如何?和chrono::steady_clock::period确定了吗?例如,chrono::steady_clock::duration可能是chrono::duration其中期间是ratio或chrono::steady_cloc

c++ - 在 C++ 中绑定(bind)多个引用的临时对象的生命周期

C++标准草案N4296说[class.temporary/5]Thesecondcontextiswhenareferenceisboundtoatemporary.Thetemporarytowhichthereferenceisboundorthetemporarythatisthecompleteobjectofasubobjecttowhichthereferenceisboundpersistsforthelifetimeofthereferenceexcept...所以我想知道如果两个或多个引用绑定(bind)到一个临时文件会发生什么。它在标准中有具体规定吗?以下代码可能

c++ - 对临时对象的 const 引用在函数作用域(生命周期)后被破坏

在询问时thisquestion,我了解到对临时对象的const引用在C++中是有效的:intmain(){inta=21;intb=21;//error:invalidinitializationofnon-constreference//int&sum=a+b;e[...]//OKintconst&sum=a+b;returnsum;}但在下面的例子中,常量引用refnop指的是一个被销毁的临时对象。我想知道为什么?#include#includestructA{//datastd::mapm;//functionsconstA¬hing()const{return*this

c++ - C++ 中的 Objective C "autorelease"——控制对象生命周期的标准方法?

我正在将一些代码从ObjectiveC移植到C++。我对C++设计模式的熟悉不如对ObjectiveC的熟悉。在Cocoa世界中,有一种非常常见的模式,即编写返回“自动释放”对象的工厂方法。一些简单的事情:-(MyClass*)load{MyClass*obj=[[MyClassalloc]init];return[objautorelease];}这个简单易懂。该方法拥有它分配的内存,但可以将其交还给调用者,同时放弃所有权。它不必知道或关心调用者对该内存做了什么。如果保留它,该对象将存活。如果完全忽略,内存将在当前调用堆栈展开后的某个时间释放。我在C++中有些惶恐地接近这个,因为它的

C++ for循环变量的生命周期很奇怪

for(inti=0;i代码的输出是123456789。我想知道为什么在执行变量声明时for循环中的变量n没有被初始化。 最佳答案 您永远不会将n初始化为特定值。当您调用intn时,C++默认不会执行此操作。相反,它只是保留一个整数大小的内存块。因此,当您调用n++时,程序只是获取该内存中恰好存在的任何值并递增它。由于您是快速连续地执行此操作而不是在其间创建新变量,因此它恰好一遍又一遍地获取相同的内存。正如@NicolasBuquet指出的那样,编译器优化也可能与选择相同内存块的一致性有关。如果您要为n分配一个值(即intn=1;)

c++ - 通过将其分配给 const std::tuple<int, int>& 来延长 std::tuple<int&,int> 的生命周期

我使用的是std::tuple类并发现我会说的是相当意外的行为。考虑代码:#include#includeinti=20;std::tuplef(){returnstd::tuple(i,0);}intmain(){conststd::tuple&t=f();intj=++i;std::cout(t)这似乎编译并打印了20在所有主要编译器上。由于两种类型不同,此标准是否符合标准或未定义的行为?我知道可以通过将临时分配给constT&来延长它的生命周期。,但据我所知std::tuple与std::tuple的类型不同. 最佳答案 这是