C语言

C语言-动态分配内存
#define malloc

#undef malloc的使用

#include "alloc.h"

int main()
{
	int *m, *memory, i;
	m = (int *)malloc(10 * sizeof(int));
	memory = MALLOC(10, int);
	if (!m)
	{
		printf("内存分配失败");
	}
	for (i = 0; i < 10; i++) {
		m[i] = i;
		printf("%d", m[i]);
	}

	for (i = 0; i < 10; i++) {
		memory[i] = i;
		printf("%d", memory[i]);
	}
	return 0;
}
#include<stdio.h>
#include "alloc.h"
#undef malloc

void * alloc(size_t size)
{
	void * newMem;
	newMem = malloc(size);

	if (!newMem) {
		printf("Out of memory\n");
		exit(1);
	}
	return newMem;
}
#include<stdlib.h>   //
#include<stddef.h>

//好像是没有alloc这个函数
#define malloc
#define MALLOC(num,type) (type *)alloc((num)*sizeof(type))
extern void * alloc(size_t size);

主函数在使用malloc分配的空间时,出现了无法读取内存的错误,然而并没有像书上说的出现语法错误。
C语言
参考书:《C和指针》

当一个使用动态分配内存的程序失败时,人们很容易把问题的责任推到malloc和free函数,但它们实际上很少是罪魁祸首,事实上,问题几乎出现在你自己的程序中,而且尝尝是由于访问了内存以外的区域而造成的。