Этот вопрос может быть исправлен, но у меня много проблем с malloc.Почему происходит сбой моей программы при освобождении памяти?
#include <stdlib.h>
#include <malloc.h>
int main(int argc, char *argv[]) {
int *arr[10];
void *mem = malloc( 10 * sizeof(int) );
int i;
for(i=0;i<=9;i++) {
arr[i] = (int*) mem + i*sizeof(int);
*arr[i]= 9-i;
}
//void** ar = (void**) arr;
//medianSort(ar, cmp, 0, 9);
free(mem); //crashes here
return 0;
}
Отчеты о сообщениях об ошибках во время выполнения :
Windows вызывает точку останова в medianSort.exe.Это может быть связано с повреждением кучи, что указывает на ошибку в файле medianSort.exe или любой из загруженных им библиотек DLL.Это также может быть связано с тем, что пользователь нажимает клавишу F12, в то время как файл medianSort.exe находится в фокусе.В окне вывода может быть больше диагностической информации.
Ниже приведен блок ошибок из malloc.c :
#ifdef _WIN64
return HeapAlloc(_crtheap, 0, size ? size : 1);
#else /* _WIN64 */
if (__active_heap == __SYSTEM_HEAP) {
return HeapAlloc(_crtheap, 0, size ? size : 1); //crashes here
} else
if ( __active_heap == __V6_HEAP ) {
if (pvReturn = V6_HeapAlloc(size)) {
return pvReturn;
}
}