在循环中释放malloc后的内存
Free memory after malloc in a loop
我在循环中分配了一些内存-当我完成tr_data变量时如何释放它?(我对c++相当陌生)
#define Malloc(type,n) (type *)malloc((n)*sizeof(type))
struct svm_problem tr_data;
tr_data.l = (int) prm_num_samples_anchored.array[bar];
tr_data.y = Malloc(double, tr_data.l);
tr_data.x = Malloc(struct svm_node*, tr_data.l);
for (int row = 0; row < tr_data.l; row++)
{
tr_data.y[row] = ta0.array[bar-row-1];
//leak
svm_node* tr_data_x_onerow = Malloc(svm_node, num_features+1);
tr_data_x_onerow[0].index = 1; tr_data_x_onerow[0].value = in0.array[bar-row-1]; tr_data_x_onerow[1].index = 2; tr_data_x_onerow[1].value = in1.array[bar-row-1]; tr_data_x_onerow[2].index = 3; tr_data_x_onerow[2].value = in2.array[bar-row-1]; tr_data_x_onerow[3].index = 4; tr_data_x_onerow[3].value = in3.array[bar-row-1]; tr_data_x_onerow[4].index = 5; tr_data_x_onerow[4].value = in4.array[bar-row-1]; tr_data_x_onerow[5].index = 6; tr_data_x_onerow[5].value = in5.array[bar-row-1]; tr_data_x_onerow[6].index = 7; tr_data_x_onerow[6].value = in6.array[bar-row-1]; tr_data_x_onerow[7].index = 8; tr_data_x_onerow[7].value = in7.array[bar-row-1]; tr_data_x_onerow[8].index = 9; tr_data_x_onerow[8].value = in8.array[bar-row-1]; tr_data_x_onerow[9].index = 10;
tr_data_x_onerow[num_features].index = -1; //Each row of properties should be terminated with a -1 according to the readme
tr_data.x[row] = tr_data_x_onerow;
}
…很少对tr_data进行操作…这行不通
for (int row = 0; row <tr_data.l; row++)
{
free(tr_data_x_onerow);
}
for (int row = 0; row <tr_data.l; row++)
{
free(tr_data.x[row]);
}
但是请不要这样做。这是c++。使用vector或其他类似的集合
相关文章:
- malloc() 可能出现内存泄漏
- 如何在 malloc 内存中初始化非 POD 数据
- 如何通过 malloc 为队列数组分配内存?
- 正在调试 malloc():新内存损坏
- C++程序错误:malloc():内存损坏
- 是否可以使用 malloc 为类对象分配内存?
- 如何使用 Malloc 调试来检查本机内存泄漏?
- 如何使用 "new" 而不是 malloc 分配内存?
- 内存碎片会减慢新/malloc
- Visual C 运行时:Malloc将指针返回到已经使用的内存(包含实际字符串)
- malloc()内存损坏仅通过为特定数量编写int数组
- 从 JNI 调用的 DLL 从哪里获取其内存以进行分配,例如 Malloc
- C++自动内存 malloc 和免费覆盖问题
- 从检测到 glibc 正常退出 - malloc():内存损坏
- 在使用新操作员和C 中的结构的调用构造函数时,获得内存损坏(Malloc)
- malloc - 运行时内存指针类型分配
- C 编程,动态内存无法使用Malloc和Calloc正常工作
- 由于新()或malloc,内存泄漏
- Realloc():即使使用malloc()分配内存,旧大小也无效
- 分割内存位置后,将内存分配给MALLOC()时分割故障