相关疑难解决方法(0)

"放置新"有什么用途?

有没有人曾经使用过C++的"贴牌新品"?如果是这样,那该怎么办?在我看来,它只对内存映射硬件有用.

c++ memory-management placement-new new-operator

385
推荐指数
18
解决办法
16万
查看次数

在void指针上使用new

int main()
{
    void* Foo = new???
    delete Foo;
}
Run Code Online (Sandbox Code Playgroud)

你怎么做上面这样的事情?你不能放new void[size].我不想知道怎么做malloc()free().我已经知道这很有效.我很好奇,想知道如何用new和delete完成它.

我用Google搜索并看到了一些东西operator new(size); 和operator delete(size);

这些和new/ 之间有什么区别delete?为什么C++不仅仅允许新的void* [size]

c++

17
推荐指数
3
解决办法
2万
查看次数

用memcpy"构造"一个​​可复制的对象

在C++中,这段代码是否正确?

#include <cstdlib>
#include <cstring>

struct T   // trivially copyable type
{
    int x, y;
};

int main()
{
    void *buf = std::malloc( sizeof(T) );
    if ( !buf ) return 0;

    T a{};
    std::memcpy(buf, &a, sizeof a);
    T *b = static_cast<T *>(buf);

    b->x = b->y;

    free(buf);
}
Run Code Online (Sandbox Code Playgroud)

换句话说,是*b一个生命已经开始的对象?(如果是的话,它什么时候开始呢?)

c++ lifetime language-lawyer

11
推荐指数
2
解决办法
1377
查看次数