我在中遇到了这小段代码,我想知道,
当指向的内存空间缩小时,realloc()函数可以将内存块移动到另一个位置吗?
int * a = malloc( 10*sizeof(int) );
int * b = realloc( a, 5*sizeof(int) );
如果可能,在什么情况下,我可以期望b的地址与a中的地址不同
我有一个我写的程序,它的内存占用会随着时间的推移而增长。它最终会消耗所有可用的系统内存,然后使系统崩溃。
我正在尝试确定似乎是内存泄漏的来源。我已经在代码上运行了Valgrind。它没有明确或间接地报告内存丢失。它确实列出了可能丢失的内存,但没有太多的清晰度。我可以使用一些关于如何追踪这个问题的建议。
==13049== HEAP SUMMARY:
==13049== in use at exit: 2,240,095 bytes in 3,720 blocks
==13049== total heap usage: 50,296 allocs, 46,576 frees, 768
我试图用C语言编译这段代码:
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define MAX 100
void MARCAR(int L[MAX][MAX], int n, int m, int queijo_i, int queijo_j);
void GRAVAR(int L[MAX][MAX], int n, int m, int rato_i, int rato_j, int cam[], int queijo_i, int queijo_j);
void push(in