假设存在一个名为Vec的类,其中有一个称为 vector的类,arr因为它是唯一的 member 。以下代码不会泄漏内存。(这意味着我的 Vec 析构函数按预期工作。)
int main() {
Vec *obj = new Vec(5); // initializes a vector of size 5
delete obj;
}
Run Code Online (Sandbox Code Playgroud)
然而,在下面的代码,有是内存泄漏。但为什么?我似乎delete每次使用new. 我错过了什么?
int main() {
Vec* obj;
obj = new Vec(5);
if (true) {
delete obj;
Vec* obj = new Vec(6);
}
delete obj;
}
Run Code Online (Sandbox Code Playgroud)
PS:我使用 valgrind 检查了内存泄漏。
我有一个__m128i充满32位整数的寄存器。我想从寄存器中提取第4个元素。
例如,如果
int extract;
__m128i register = _mm_set_epi32(3,2,1,0);
Run Code Online (Sandbox Code Playgroud)
然后我想“提取”值为3。
似乎_mm_extract_epi32()应该可以完成工作。但是,它有一个imm8参数。
图: 在英特尔网站上的描述
我只是不了解imm8工作方式(或者在这种情况下会工作)。有人可以详细说明如何使用imm8作为参数吗?