小编XCS*_*CSM的帖子

通过静态变量分配的内存会发生内存泄漏吗?

我得到了一组源代码,其中的情况如下:

假设我有一个源文件 (source1.c),其中包含:

static float *var;

void alloc_mem ()
{
  var = (float *) malloc(N * sizeof(float));
}

void some_function (float *data)
{
  // do something with var and data
}
Run Code Online (Sandbox Code Playgroud)

在主函数中,我有

int main()
{
  alloc_mem ();
  some_function (data);
}
Run Code Online (Sandbox Code Playgroud)

现在,我无法var通过调用free(var)main来释放分配给的内存,因为它不在那里的范围内。

这种情况会导致内存泄漏吗?如果我在 source1.c 中定义一个函数为

void dealloc_mem()
{
  free(var);
}
Run Code Online (Sandbox Code Playgroud)

并在 main 的末尾调用它,它会起作用吗?

c malloc free static memory-leaks

0
推荐指数
1
解决办法
64
查看次数

为什么 C++ 数组类比 C 风格的数组花费更多的时间来操作?

我编写了一个简单的代码来比较对两个数组(两个大小相同)的元素进行操作所花费的时间,一个由 C++ 数组类定义,另一个由普通的 C 样式数组定义。我使用的代码是

    #include <iostream>
    #include <array>
    #include <chrono>   

    using namespace std;

    const int size = 1E8;
    const int limit = 1E2;

    array<float, size> A;
    float B[size];

    int main () {

       using namespace std::chrono;

    //-------------------------------------------------------------------------------//
       auto start = steady_clock::now();
           
       for (int i = 0; i < limit; i++)
       for (int j = 0; j < size; j++)
                A.at(j) *= 1.;     

       auto end = steady_clock::now();
       auto span = duration_cast<seconds> (end - start).count();
       
       cout << "Time taken for array A …
Run Code Online (Sandbox Code Playgroud)

c++ arrays time compiler-optimization

-2
推荐指数
1
解决办法
102
查看次数

标签 统计

arrays ×1

c ×1

c++ ×1

compiler-optimization ×1

free ×1

malloc ×1

memory-leaks ×1

static ×1

time ×1