小编Muz*_*zol的帖子

我还可以对一个对其进行第二次malloc()调用的变量调用free()吗?

我想知道当一个系统如何释放内存时,malloc()调用是否与你分配malloc()的初始变量绑定在一起.

例如,我可以执行以下操作:

void * ptr1 = malloc(50);
void * ptr2 = ptr1;
ptr1 = malloc(25);
free(ptr2);
Run Code Online (Sandbox Code Playgroud)

我打算释放最初分配给ptr1 的内存,但后来用另一个指针释放它.

c memory malloc

4
推荐指数
1
解决办法
104
查看次数

构造动态大小的std :: initializer_list,第二部分

这个问题的启发,我开始想知道是否有办法std::initializer_list从a 创建一个std::vector.

鉴于c ++ 17保证了RVO,在我看来,通过构建初始化函数的编译时调度表可能是可能的.

这是代码的第一次尝试:

#include <initializer_list>
#include <vector>
#include <iostream>
#include <array>
#include <stdexcept>

namespace impl
{
    template<class T, std::size_t...Is>
    auto as_init_list(std::vector<T> const& v, std::index_sequence<Is...>)
    {
        auto ret = std::initializer_list<T>
        {
            v[Is]...
        };
        return ret;
    }

    template<class T, std::size_t N>
    auto as_init_list(std::vector<T> const& v)
    {
        auto ret = as_init_list(v, std::make_index_sequence<N>());
        return ret;
    }

    template<class T, std::size_t...Is>
    constexpr auto as_init_list_vtable(std::index_sequence<Is...>)
    {
        using ftype = std::initializer_list<T>(*)(std::vector<T> const&);
        auto ret = std::array<ftype, sizeof...(Is)>
        {{
            &as_init_list<T, …
Run Code Online (Sandbox Code Playgroud)

c++ vector language-lawyer c++17

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

标签 统计

c ×1

c++ ×1

c++17 ×1

language-lawyer ×1

malloc ×1

memory ×1

vector ×1