草庐IT

align-self

全部标签

c# - 例如,是否有可能销毁/删除 self ?

注意:我对C#、Java和C++最感兴趣,但因为这是任何语言都会做的更具学术性的问题。我知道这个问题可以从外部解决,方法是使用给定语言的适当方法(调用free、Dispose,或删除对实例的所有引用)。我的想法是创建一个实例,然后在构造函数中启动私有(private)计时器。当计时器结束时,它将调用一些实例方法并销毁变量。我认为在C#中应该可以在实现IDisposable时调用自身的Dispose,但这不会破坏实例。在C++中,我可以调用析构函数,但这会导致内存泄漏,而且这是非常糟糕的做法。在Java中我不知道,分配给this是不可能的,因为它是final字段。那么有什么方法可以sel

c++ - alignas 说明符 vs __attribute__(aligned),c++11

我目前正在使用C++11开发操作系统内核,我遇到了一个问题,我似乎无法找到自己的答案。目前我正在对齐我的分页结构,使用编译器特定的属性(例如gcc的__attribute__(aligned)),但是我想改用C++11alignas说明符,在Clang++这不是问题,因为它很乐意接受4096对齐作为alignas的参数,但是G++不接受!所以首先,alignasspecifier和gcc__attribute__(aligned)之间的主要区别是什么,显然两者都确保与特定值对齐,但是gcc中的alignas说明符似乎有128的限制,而属性似乎几乎没有限制,这是为什么?另外,为什么不能将

c++ - 在 C++ 中 self 删除一个对象

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++:Deletethis?Object-OrientedSuicideordeletethis;我想知道下面的代码是否可以安全运行:#includeusingnamespacestd;classA{public:A(){coutdeleteMe();cout输出是:ConstructorDestructorIwasdeletedExit...程序正常退出,但这里是否存在内存访问暴力?

c++ - `std::alignment_of` 与 `alignof`

我刚刚偶然发现了std::alignment_of类型特征,以及它即将成为friend的std::alignment_of_v。它们似乎经过专门设计,相当于对alignof的简单调用。,并且将来添加的_v助watch明它不仅仅是一个遗留位。当我们有alignof时,std::alignment_of(_v)有什么用? 最佳答案 它们几乎完全是多余的。正如@Revolver指出的那样,它们在不同的论文中被介绍过,并且alignment_of来自boost几乎一字不差。但这并不意味着该特征是无用的。Atemplateclass可以传递给

c++ - 区别 b/w Objective C 的 self 和 C++ 的 this?

有人能说出Objective-C的self和C++this指针之间的区别吗? 最佳答案 主要区别是this是一个关键字,而self是一个变量。这样做的结果是,虽然this总是引用正在执行特定方法的对象,但Objective-C方法可以自由修改self在执行期间。这有时被构造函数使用,它在失败时设置self=nil。这样做的原因是:这样子类(使用self=[superinit]链式初始化器)可以看到初始化失败的时间,并且知道不要在自己的初始化器中继续。组合对象可以看到失败并知道它们没有有效的组件。一些初始化器会将self设置为一个不同

c++ - aligned_storage 的基本用途是什么?

std::tr1::aligned_storage的基本用法是什么?它可以用作像下面这样的数据类型Foo的自动存储器吗?structFoo{...};std::tr1::aligned_storage::value>::typebuf;Foo*f=new(reinterpret_cast(&buf))Foo();f->~Foo();如果是这样,在buf中存储多个Foo怎么样,std::tr1::aligned_storage::value>::typebuf;Foo*p=reinterpret_cast(&buf);for(inti=0;i!=5;++i,++p){Foo*f=new(

c++ - 继承 : Function that returns self type?

假设我有两个类:classA{public:A*Hello(){returnthis;}}classB:publicclassA{public:B*World(){returnthis;}}假设我有一个B类的实例,如下所示:Btest;如果我调用test.World()->Hello()就可以了。但是test.Hello()->World()将无法工作,因为Hello()返回A类型。如何让Hello()返回B的类型?我不想使用virtual函数,因为我们有20多个不同的类继承A。 最佳答案 您可以使用CRTP,奇怪的重复模板模式:t

windows - 有没有办法在 Windows 中制作可 self 更新的可执行文件?

我想生成一个可以在加载前进行更新验证的可执行文件,然后,如果有更新,我希望它替换它的文件然后重新加载。我认为这比分离一个“更新程序”exe更好,因为如果必须更新更新程序怎么办?我无法在网络中共享文件夹。 最佳答案 https://stackoverflow.com/questions/264788/can-i-update-a-exe-that-is-running-closed是的,您可以让exe文件自行下载。只需将正在运行的exe重命名为.bak,将新的exe下载为.exe,然后重新启动应用程序。这里的关键是你不能在程序运行时下

windows - Git : remove totally nonexistent file from. ..好吧......来 self 不知道在哪里

我在Windows上使用git。我曾经添加过一个文件,然后将一个字母改成大写,然后用新名称再次添加。从那时起,我一直拥有这两个文件(一个大写,一次不是)。myFile.extmyfile.extGit总是将它解释为两个不同的文件(因为它配置区分大小写)但它实际上是同一个文件,所以它跟踪这个文件两次,每个名称一次。我现在已经从repo中删除了大写文件gitrm--cachedmyFile.ext所以现在我的文件只有一个轨道,这一切都很好。myfile.ext问题是,如果我想对较旧的提交进行checkout,git会说:error:Thefollowinguntrackedworkingt

c++ - 如何进行文件 self 更新( native C++)

我在Windows目标部署中使用MicrosoftVisualStudio2008。我如何使文件“self更新”?我已经了解了“通过​​网络传输”部分,但如何使可执行文件覆盖自身?基本上,我想为一个目录编写一个自动更新程序,该目录还包含自动更新程序,并且更新程序需要更新目录中的所有内容。也许有一种方法可以在文件锁定被释放之前挂起对文件的更改。不过,如果我要这样做,我可能会用热补丁跟进。 最佳答案 编写一个新的可执行文件并删除或保存旧文件的拷贝——您可以通过网络发送一个差异文件,并让第三个程序(更新监视器或其他任何程序)来应用它。它只