您的位置:首页 > 其它

QQ群里关于动态内存的问题

2012-07-19 13:54 330 查看
程序1.
#include "iostream.h"
#include "stdlib.h"
int* b=NULL;
void fuck(int* a);
void main()
{	b = (int*) malloc(2);
	if(b)
	{
		*b=1;
	}
	cout<<b<<endl;
	fuck(b);
}
void fuck(int *a )
{
	free(a);
}




#include "iostream.h"
#include "stdlib.h"
int* b=NULL;
void fuck(int* a);
void main()
{	b = (int*) malloc(2);  // 直接用2作为分配长度不可靠,16位编译器下int占2字节,32位编译器下int占4字节……
	if(b)
	{
		b=1;  // 向指针赋整数常量不可靠,除非确实知道地址的具体值
	}
	cout<<b<<endl;
	fuck(b);
}
void fuck(int *a )
{
	free(a);
}
程序2
b = (int*) malloc(4);



#include "iostream.h"
#include "stdlib.h"
int* b=NULL;

void fuck(int* a);
void main()
{
	fuck(b);
	*b = 1;
	cout<<b<<endl;
	free(b);
}

void fuck(int*a)
{
	a = (int*) malloc(sizeof(int));
}



#include "iostream.h"
#include "stdlib.h"
int* b=NULL;

void fuck(int* a);
void main()
{
	fuck(b);
	*b = 1;
	cout<<b<<endl;
	free(b);
}

void fuck(int*a)
{
	a = (int*) malloc(sizeof(int)); // 函数参数是传值的,也就是说参数的变化不会影响到实参,因此这里分配到的空间的地址不会存到全局的b中
}


复制搜索

复制搜索
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: