草庐IT

logically_deleted_y

全部标签

c++ - 使用 Win32 应用程序在 Windows 7 中禁用 CONTROL + ALT + DELETE 和 Windows(win) 键

这个问题在这里已经有了答案:DisableCtrl+Alt+DelonWindows7(3个答案)关闭5年前。我正在编写一个像kiosk一样运行的应用程序,应该允许用户退出应用程序。在Windows7中,当他按下Win键或CTRL+ALT+DELETE,它来自程序。我需要在Windows7Ctrl+ALT+DELETE组合键和Win键以编程方式。

c++ - 在 C++ 中调用 delete/delete[] 时中断调试器

我可能遗漏了一些非常微不足道的东西,但是有没有办法在调用任何delete或delete[]时暂停/中断调试器?我尝试了Debug->NewBreakpoint->FunctionBreakpoint(输入delete作为函数名称)但它并没有真正触发。提前致谢! 最佳答案 deleteanddelete[]是表达式中的运算符,而不是函数。然而,它们确实会调用可以重载(并用于设置断点)的运算符函数。这些被命名为operatordeleteandoperatordelete[]. 关于c++-

c++ - 为什么我可以做 "delete p;",而不是 "delete (p+1);"?为什么 delete 需要左值?

关于thispage,是这么写的Onereasonisthattheoperandofdeleteneednotbeanlvalue.Consider:deletep+1;deletef(x);Here,theimplementationofdeletedoesnothaveapointertowhichitcanassignzero.将一个数字添加到一个指针会在内存中将它向前移动那么多sizeof(*p)单位。那么,deletep和deletep+1有什么区别,为什么指针0只是一个问题使用deletep+1? 最佳答案 你不能做p

c++ - 使用 delete []p 时堆损坏;

如果我使用delete[]p,会发生堆损坏。Rectangle*p[3];for(inti=0;iset(3,4);p[1]->set(10,8);p[2]->set(5,6);for(inti=0;iarea()我把delete[]改成后for(inti=0;i它有效,但为什么我不能使用delete[]p?delete[]p是否只删除p[0]以及delete[]p中的[]是什么意思? 最佳答案 delete[]仅在使用new[]分配后使用,和delete仅在new之后.这就是C++的工作原理。如果你想简单地分配一个数组3Recta

c++ - 如果我将 free 与 new 一起使用或将 delete 与 malloc 一起使用,结果会怎样?

是编译错误还是运行时错误?下面的代码可以编译!classBase{voidg();voidh();};intmain(){Base*p=newBase();free(p);return0;}但是,如果我这样声明类Base,它就不能用虚函数编译了classBase{virtualvoidg();voidh();};无论函数是否为虚函数,下面的代码都可以一直编译。classBase{voidg();voidh();};intmain(){Base*p=(Base*)malloc(sizeof(Base));deletep;return0;} 最佳答案

c++ - 在 C++0x 中虚拟方法不是 "delete"吗?

当我们尝试deletevirtual方法时,错误消息似乎有点误导了场景。prog.cpp:4:16:error:deletedfunction'virtualvoidTest::foo()'prog.cpp:8:2:error:usedhere代码structTest:publicBase{Test(){}virtualvoidfoo()=delete;//error};virtual方法是否出于同样的原因不能delete,为什么它们不能在C++03中保持未实现状态?有没有办法提到Test故意不实现virtualfoo()? 最佳答案

c++ - 在 C++ 中,即使调用了 delete,进程什么时候会保留分配的内存?

我想了解在以下情况下GCC运行时发生了什么。我有一个C++程序,它分配许多内存块然后删除它们。令人费解的是GCC运行时没有将内存返回给操作系统。相反,它仍然由我的程序保留,我想以防万一我想在不久的将来分配类似的内存块。下面的程序演示了发生了什么:#includeusingnamespacestd;voidpause1(){cout>ch;}voidallocate(intsize){int**array=newint*[size];for(intc=0;c我通过运行“ps-e-ovsz,cmd”检查进程在每次暂停时占用的内存量(当它根本不应该占用任何内存时)。进程在每次暂停时持有的数量

c++ - 我们如何在常量成员函数中调用 "delete this; "?

我看到的代码片段如下:classUPNumber{public:UPNumber();UPNumber(intinitValue);...//pseudo-destructor(aconstmemberfunction,because//evenconstobjectsmaybedestroyed)voiddestroy()const{deletethis;}//whythislineiscorrect???...private:~UPNumber();};首先,我确信上面的类定义是正确的。这是我的问题,为什么我们可以像上面那样定义函数'destroy'?问的原因是为什么我们可以在常量

c++ - 在变量地址上调用 delete

我为什么要这样做:inti=*(newint(5));然后成功地使用i,但是当我尝试时:delete&i;我遇到运行时错误:Unhandledexceptionat0x5ddccaf7(msvcr100d.dll)inTest.exe:0xC00000FD:Stackoverflow.如果i是一个引用:int&i=*(newint(5));,所有这些(包括delete)工作正常。我知道,将分配的内存处理程序保留在指针以外的其他东西中是不好的,*(new...)很糟糕,但我只是想知道,为什么new运行良好,但delete失败。//以下是我对这种行为原因的猜测:是不是因为执行程序的模块(它

c++ - "delete this"到一个用 std::shared_ptr 分配的对象?

我知道,每当您使用传统指针为new分配内容时,都可以在C++中说deletethis。事实上,我也知道如果你小心处理它是很好的做法。如果对象被std::shared_ptr持有,我可以让对象说deletethis吗?那应该调用析构函数,对吗?给你一个想法,我正在制作一个游戏,其中一艘船可以发射导弹,我想让导弹自行删除。 最佳答案 不,这不安全,对象的生命周期是由shared_ptr的持有者决定的,所以对象本身不能决定它是否要消亡。如果你这样做,你会得到双倍的当最后一个shared_ptr死亡时删除。我能提供的唯一解决方案是“重新考虑