int n;
int **arr;
arr = (int**)malloc(n*sizeof(int));
for (i=0; i<n; ++i){
arr[i] = malloc(2*sizeof(int));
}
Run Code Online (Sandbox Code Playgroud)
[编辑]
*** glibc detected *** ./abc: double free or corruption (out): 0x0000000002693370
======= Backtrace: =========
/lib/libc.so.6(+0x775b6)[0x7f42719465b6]
/lib/libc.so.6(cfree+0x73)[0x7f427194ce53]
./abc[0x405f01]
/lib/libc.so.6(__libc_start_main+0xfd)[0x7f42718edc4d]
./abc[0x400ee9]
======= Memory map: ========
00400000-00416000 r-xp 00000000 08:07 392882
00616000-00617000 r--p 00016000 08:07 392882
Run Code Online (Sandbox Code Playgroud)
我尝试了下面提到的答案,但我得到了以下上面提到的错误.它可能是什么原因?
[编辑]
现在解决了上述问题.由于代码中存在错误.现在,我没有得到的是释放内存的任何改进.这可能是什么原因?
[编辑]我正在使用一些模块来打印内存.以下是代码
memory_Print();
#ifdef CHECK
memory_PrintLeaks();
#endif
Run Code Online (Sandbox Code Playgroud)
这里memory_PrintLeaks()打印所需的内存和释放的内存.我在进行更改后获得相同的值.
我要添加的另一个注释是,我可以在程序中的任何地方调用free(),或者需要从某个特定位置调用,例如调用malloc()的位置或程序结束时?
我有一个C代码,在64位CPU处理器中没有任何内存泄漏但在32位处理器中显示泄漏.可能是什么原因.GCC 4.1.2是编译器,Debian是操作系统.
我想在C程序中从C++重现get style函数.在C++,类中可以有两个函数来分配值和设置值.在C中有没有相同的方法?可以说我有以下结构:
typedef struct test_help
{
int a;
void** numArrays;
struct test_help *next;
} help_node, *help;
Run Code Online (Sandbox Code Playgroud)
我有以下函数来访问结构的值:
int access_int(help damaru) {
return damaru->a;
}
Run Code Online (Sandbox Code Playgroud)
所以我可以从结构中分配整数的值:
int y = access_int(damaru);
Run Code Online (Sandbox Code Playgroud)
但我想将值分配给结构的成员,如:
help damaru;
int z=10;
damaru->int = z;
Run Code Online (Sandbox Code Playgroud)
我想摆脱使用->.我想编写一个类似于assign函数的函数.我想提醒您,在左侧使用访问功能会显示警告.
我在以下代码中遇到null-exception throw错误.它可能是什么原因?
public static String[] CreateVocab(BufferedReader buffR) throws IOException{
String[] arr = null;
int i = 0;
arr[i]= null;
String line = new String();
while((line = buffR.readLine()) != null){
arr[i] = line;
i=i+1;
}
return arr;
}
Run Code Online (Sandbox Code Playgroud)
编译器在代码中显示Null ponter异常
arr[i]=null.
我有一个Hashmap <integer, Arraylist<Double>>.我想复制一份.我在考虑使用clonehashmap的方法.经过javadoc后,它说:
clone
Returns a shallow copy of this HashMap instance: the keys and values themselves are not cloned.
Run Code Online (Sandbox Code Playgroud)
这个浅拷贝是什么意思?我想要一个单独的矩阵,其值在更新原始矩阵的值时不会改变.
为什么呢,
if( hm1 == hm1.clone())
Run Code Online (Sandbox Code Playgroud)
返回false?
这里TEST是一个结构指针.结构包含整数.什么是正确的因素呢?TEST结构如下.我使用gcc作为编译器.
typedef struct TEST_HELP{
int value;
} *TEST, TEST_NODE;
Run Code Online (Sandbox Code Playgroud) 是否可以连接两个或更多的arraylist?我有以下案例:
private Arraylist<Double> getContextVectorsize(int sizeContext){
ArrayList<Double> contextList = new ArrayList<Double>();
for(int i =0 ; i< sizeContext; i++){
contextList = //TODO
}
}
Run Code Online (Sandbox Code Playgroud)
我想按顺序附加所有的arraylist并想要生成一个arraylist
size = sizeContext*ArraylistOfSingleMember
我如何从他的代码中释放泄漏的内存.
struct object_one{
int value;
}*object,object_node;
struct node_one {
void **pointers;
}*node, node_node;
node sample(){
object number;
node node123;
node123 = malloc(sizeof(node_node));
number = malloc(sizeof(object_node));
number->valu = malloc(sizeof(int));
number->value = 9;
node123->pointers[0]=number;
free(number);
return node123;
}
Run Code Online (Sandbox Code Playgroud)
我正在以正确的方式释放所引用的内存.number一旦我执行上述操作,我就会收到错误;
Invalid read of size 4
==15957== at 0x403804: main (abc.c:1255)
==15957== Address 0x540cb50 is 0 bytes inside a block of size 4 free'd
Run Code Online (Sandbox Code Playgroud)
请建议我如何在这种情况下防止内存泄漏?提前致谢.
[编辑]
嗨,实际上上面提到的不是我的真实代码.但我已经尽力重新选择代码的sturcutre和语义.实际上我正在实施数据架构.number是一些临时存储,node123是我真正的数据库.我想number在数据库中分配值并取消引用它.numbertype是数据库的一个组件.
[EDIT2]
对应于行的代码1255是打印由.持有的值.object i'e value …