- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我已经为这个错误苦苦挣扎了很长时间。如果有帮助的话,我会提供一些问题的快照。请指导我该怎么办????在我看来,它看起来一团糟。
*** glibc detected *** /home/shivam/workspace/Project/Debug/Project: free(): invalid next size (fast): 0x099781a0 ***
======= Backtrace: =========
/lib/i386-linux-gnu/libc.so.6(+0x6ff22)[0x17ff22]
/lib/i386-linux-gnu/libc.so.6(+0x70bc2)[0x180bc2]
/lib/i386-linux-gnu/libc.so.6(cfree+0x6d)[0x183cad]
/home/shivam/workspace/Project/Debug/Project[0x8048a57]
/home/shivam/workspace/Project/Debug/Project[0x8048fce]
/lib/i386-linux-gnu/libc.so.6(__libc_start_main+0xf3)[0x129113]
/home/shivam/workspace/Project/Debug/Project[0x8048541]
======= Memory map: ========
00110000-00288000 r-xp 00000000 08:08 786579 /lib/i386-linux-gnu/libc-2.13.so
00288000-0028a000 r--p 00178000 08:08 786579 /lib/i386-linux-gnu/libc-2.13.so
0028a000-0028b000 rw-p 0017a000 08:08 786579 /lib/i386-linux-gnu/libc-2.13.so
0028b000-0028e000 rw-p 00000000 00:00 0
0039e000-003ba000 r-xp 00000000 08:08 787384 /lib/i386-linux-gnu/libgcc_s.so.1
003ba000-003bb000 r--p 0001b000 08:08 787384 /lib/i386-linux-gnu/libgcc_s.so.1
003bb000-003bc000 rw-p 0001c000 08:08 787384 /lib/i386-linux-gnu/libgcc_s.so.1
0040f000-00410000 r-xp 00000000 00:00 0 [vdso]
00b16000-00b34000 r-xp 00000000 08:08 786576 /lib/i386-linux-gnu/ld-2.13.so
00b34000-00b35000 r--p 0001d000 08:08 786576 /lib/i386-linux-gnu/ld-2.13.so
00b35000-00b36000 rw-p 0001e000 08:08 786576 /lib/i386-linux-gnu/ld-2.13.so
08048000-0804a000 r-xp 00000000 08:08 1604 /home/shivam/workspace/Project/Debug/Project
0804a000-0804b000 r--p 00001000 08:08 1604 /home/shivam/workspace/Project/Debug/Project
0804b000-0804c000 rw-p 00002000 08:08 1604 /home/shivam/workspace/Project/Debug/Project
09978000-09999000 rw-p 00000000 00:00 0 [heap]
b7700000-b7721000 rw-p 00000000 00:00 0
b7721000-b7800000 ---p 00000000 00:00 0
b7829000-b782a000 rw-p 00000000 00:00 0
b783e000-b7840000 rw-p 00000000 00:00 0
bf8c6000-bf8e7000 rw-p 00000000 00:00 0 [stack]
实际代码如下:
/*
* de.c
*
* Created on: 2012-04-11
* Author: shivam
*/
#include
#include
#include
#include
#include "const.h"
int simulate_de(result * input, double * bestarr) {
/* random seed */
srand((unsigned) time(NULL));
int i, j;
/* initial population */
double ** population = input->population;
/* generating random population */
double ** new_pop = (double **) malloc(POPULATION_SIZE * sizeof(double *));
/* Initialise the dynamic array */
for (i = 0; i < POPULATION_SIZE; i++)
new_pop[i] = (double *) malloc(DIMENSION * sizeof(double));
// for(i = 0; i < POPULATION_SIZE; i++) {
// for(j = 0; j < DIMENSION; j++) {
// population[i][j] = (input->min - input->max) * ((double)rand() / RAND_MAX) + input->max;
// }
// }
/* simulation length */
int sim_len = MAX_NFC * DIMENSION;
/* for randomly choosing the three random numbers */
int rand_chooser[POPULATION_SIZE];
/* Initialise the random chooser array */
for (i = 0; i < POPULATION_SIZE; i++)
rand_chooser[i] = i;
char * _boolMap;
_boolMap = (char *)malloc((sim_len + 1) * POPULATION_SIZE * sizeof(char));
memset(_boolMap, 0, (sim_len + 1) * POPULATION_SIZE * sizeof(char));
double * _valMap;
_valMap = (double *)malloc((sim_len + 1) * POPULATION_SIZE * sizeof(double));
int nfc = 0, X;
double solution, trial_solution, best_temp, best;
/* trial vector */
double U[DIMENSION];
/* noisy vector */
double V[DIMENSION];
while (nfc < sim_len) {
best = 0x7ff0000000000000;
for (i = 0; i < POPULATION_SIZE; i++) {
/* choosing randomly */
int _rand[3];
for (j = 0; j < 3; j++) {
int idx;
/* generate random number not equal to I */
while ((idx = rand() % (POPULATION_SIZE - j)) == i);
_rand[j] = rand_chooser[idx];
/* swap */
rand_chooser[idx] = rand_chooser[POPULATION_SIZE - 1];
rand_chooser[POPULATION_SIZE - 1] = _rand[j];
}
/* add values to noisy vector */
for (j = 0; j < DIMENSION; j++) {
V[j] = population[_rand[0]][j]
+ F
* (population[_rand[2]][j]
- population[_rand[1]][j]);
if (V[j] < input->min)
V[j] = input->min;
else if (V[j] > input->max)
V[j] = input->max;
}
for (j = 0; j < DIMENSION; j++) {
if (((double) rand() / RAND_MAX) < CR)
U[j] = V[j];
khác
U[j] = population[i][j];
}
X = (sim_len + 1) * nfc + i;
if(_boolMap[X] == DEFINED)
solution = _valMap[X];
else {
solution = input->function(population[i], DIMENSION);
_valMap[X] = solution;
_boolMap[X] = DEFINED;
}
trial_solution = input->function(U, DIMENSION);
/* replace into new population */
if (trial_solution <= solution) {
for (j = 0; j < DIMENSION; j++)
new_pop[i][j] = U[j];
best_temp = trial_solution;
} khác {
for (j = 0; j < DIMENSION; j++)
new_pop[i][j] = population[i][j];
best_temp = solution;
}
X += sim_len + 1;
/* next population */
_valMap[X] = best_temp;
_boolMap[X] = DEFINED;
if (best_temp < best)
best = best_temp;
}
/* add best fitness */
bestarr[nfc] = best;
/* replace the population */
for (i = 0; i < POPULATION_SIZE; i++) {
for (j = 0; j < DIMENSION; j++) {
population[i][j] = new_pop[i][j];
}
}
/* increment the NFC */
nfc += 1;
}
/* free up all the dynamic memory */
for (i = 0; i < POPULATION_SIZE; i++) {
free(new_pop[i]);
}
free(new_pop);
free(_boolMap);
free(_valMap);
trả về 0;
}
我尝试了调试器,导致此错误的行是 free(_boolMap)
即最后第三行。
1 Câu trả lời
_valMap
Và _boolMap
的大小为 (sim_len + 1) * POPULATION_SIZE
。确保您的 X
不超过该大小。
也许如果您可以发布 chủ yếu()
Và const.h
,这将有助于回答这个问题稍微简单一点...
关于c - *** 检测到 glibc *** 项目/调试/项目 : free():,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136874/
这个问题在这里已经有了答案: How do free and malloc work in C? (8 个答案) 关闭 8 年前。 如果你使用malloc()为4个整数分配内存,它不应该返回第一个整
首先,介绍一下背景知识,这样您就不会认为我在尝试做一些疯狂的事情: 我正在尝试调试由其他人编写的 C 库中的崩溃。崩溃看起来像这样: TheProgram(44365,0x7fff75996310)
我正在 cstdlib malloc() 和 free() 函数之上创建自定义内存分配器(出于性能原因)。分配器位于一个简单的类中,该类存储一些内存缓冲区和其他参数。我想将释放内存的方法命名为 fre
我一直在解决这个练习,我不知道从哪里开始: 语言 B 是上下文无关的;语言 C 是 B 的子集:C 是否是上下文无关的?证明或反驳。 我试过使用闭包属性: C = B - ( (A* - C) ∩ B
关闭。此题需要details or clarity 。目前不接受答案。 想要改进这个问题吗?通过 editing this post 添加详细信息并澄清问题. 已关闭 8 年前。 Improve th
如果我想获得在 C 中进行 malloc 的指针的所有权,则 docs for the Python cffi package和 this answer假设使用 ffi.gc 和 lib.free 作
#include #include struct node { int value; struct node* next; }; typedef struct node node_
众所周知,Oracle 在 Java 11 中更改了 Java 许可证,要求 JDK 的商业用途需要付费许可证。然而,使用 OpenJDK 仍然是免费的。 我的 PC 上有一个 JDK 11 文件夹,
đóng cửa. Câu hỏi này không đáp ứng được hướng dẫn của Stack Overflow. Hiện tại câu hỏi này không chấp nhận câu trả lời. Câu hỏi này có vẻ không liên quan đến một vấn đề lập trình cụ thể, một phần mềm.
我是 C 的新手,在 Linux 中使用带有开关 gcc -g -std=c89 -Wall ... 的 gcc4.4.6 进行编程,我在许多函数深处遇到了这个错误我的程序名为 compute: **
在多线程编程中,我们可以找到两个或多个线程/任务之间的数据传输同步的不同术语。 什么时候我们可以说某个算法是: 1)Lock-Free 2)Wait-Free 3)Wait-Freedom 我明白无锁
我正在尝试使用我通过 malloc() 手动分配的数组来运行程序。我在程序末尾释放()这个数组,但我不断收到错误消息 *** glibc detector *** ./test: double fre
我将 libxml2 与 libxslt 一起用于 C++ 程序的 XML 处理。为了使用 XSL 转换 XML 文档,我使用了以下函数(删除了错误处理): xmlDocPtr transformXm
new/delete 关键字使用免费商店 malloc/free 关键字是使用堆 我看到某处写着new 使用malloc。怎么会这样?它们不在内存段中使用? 其次,我看到某处写道我们不能在new 之后
我有这个简单的代码,我想在 tutorialspoint.com 上运行 #include using namespace std; class Vehicle { string vehic
我需要创建一个函数来删除 c 中链表的前 n 个节点,并返回删除的节点数。如果列表小于 n,它应该变为空。 另外,我不能使用递归。 使用现在的代码,它可以工作,但我没有释放“已删除”节点的内存。如果我
我需要调试这段代码的帮助。我知道问题出在 malloc 和 free 中,但找不到确切的位置、原因和解决方法。请不要回答:“使用 gdb”,仅此而已。我会使用 gdb 来调试它,但我仍然不太了解它并且
这个问题在这里已经有了答案: Unable to free const pointers in C (12 个答案) 关闭 8 年前。 将 C++11 代码连接到某些 C 回调,我必须传递 cons
这是出于好奇,我试图找到我对之前问题的疑问的答案,但他们似乎没有答案。所以在这里问,我只是写了一个代码,我试图将内存分配给一个 int 指针(以填充一个数组)并将 int 值扫描到它。完成数组后,我想
我有两个免费的单子(monad),用于不同上下文中的不同操作。但是,如果特定操作位于上下文中,则一个(主要)DSL 需要包含另一个(action)DSL: import Control.Monad.F
Tôi là một lập trình viên xuất sắc, rất giỏi!