我得到了一组源代码,其中的情况如下:
假设我有一个源文件 (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++ 数组类定义,另一个由普通的 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)