我想知道是否有人能够对此提供任何见解...
我的程序在这个调用上崩溃:
void subtract(data* array,data* inverse,int a, int b, int q, int n)
{
data* arraytomultiply;
arraytomultiply = (data *)malloc(sizeof(data*) * n);
这里的data只是保存一个整数(为了方便以后切换类型)
typedef struct {
int value;
}data;
我尝试过多次更改这里的指针,但由于我对它们不是很自信,所以没有成功。
奇怪的是,在程序早期这个调用是有效的,我为它分配值并可以打印出来。
data* array;
array = (data*)malloc(sizeof(data*) * m * n); // m * n entries
有一件事可能会有用(虽然我不知道为什么),那就是当它在一个空函数中运行时,它能正常工作,而当它崩溃时,它在算法内部调用的函数中。但是,考虑到我正在尝试做的不涉及任何参数等,我不认为这会对它产生影响...
有任何想法吗?
malloc
崩溃时,几乎总是由于先前内存已被破坏的结果。我敢打赌,在先前malloc
的数据块之前或之后立即写入了数据。 - Drew Dormann