下面这段代码有什么问题?错在哪?
请大家帮忙看看下面这段代码哪里有错误
#include<stdio.h>
int main()
{
unsigned long i = 0, *p, *p1;
p = (unsigned long*)malloc(10000);
p1 = p;
for(i=0; i<9999; i++)
{
*p1 = 0x100;
p1++;
}
printf("over!\n");
free(p);
}
[解决办法]
是这样的, malloc()的参数单位是字节,你分配10000个字节, 而定义的是无符号long型指针,在32位机上指针
自增是4个字节,所以for循环中不能是9999次,而是10000/4 也就是循环2500次,回答完毕!
[解决办法]
p = (unsigned long*)malloc(10000*sizeof(unsigned long));
//10000小了
[解决办法]
malloc 的内存不够
[解决办法]
2,3楼正解
[解决办法]
[解决办法]