内存开辟及使用注意事项

	char* str = "hello";
	int length = strlen(str);

	//动态分配内存空间;适当位置if(spy_str!=NULL) free(spy_str);spy_str=NULL;
	char* spy_str = NULL;
	spy_str = (char*)malloc((length + 1)*sizeof(char));//使用strcpy长度加1必须;
	
	//静态分配内存空间,c++ []={0}更严谨,(strcat需要制0)。既然叫他静态也无需free();
	char spy_str2[64] = {0};//使用memcpy长度不用加1。//delete[] spy_str2;这种声明类似常量静态,无法删除。
	//改用char* spy_str2=new char[64]可以delete[]
	strcpy(spy_str2, str);
	strcpy(spy_str, str);
	/*free(spy_str); spy_str = NULL;*///这里free后,在使用spy_str会出问题,因为找不到内存。改用memset
	memset(spy_str, 0, length);
	strcpy(spy_str, spy_str2);
	if (spy_str != NULL) free(spy_str); spy_str = NULL;
	

导致程序崩溃的原因是使用了静态内存开辟空间后还要强行delete

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

bug狂人

让我们和小姐姐唠嗑可以肢愣起来

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值