#include<iostream>
#include<string.h>
#include<stdlib.h>
using namespace std;
/* 1.崩溃
void mac(char *p)
{
char* t;
t=(char*)malloc(sizeof(char)*100);
p=t;
}
int main()
{
char *str=NULL;//str指向地址为空
char array[]="abcdef";
strcpy(str,array);
cout<<str;
free(str);
str=NULL;
}*/
/*2.崩溃
void mac(char *p)
{
char* t;
t=(char*)malloc(sizeof(char)*100);
p=t;
}
int main()
{
char *str="ffweeee";//str指向的内容在常量区,不能更改
char array[]="abcdef";
strcpy(str,array);
cout<<str;
free(str);
str=NULL;
}*/
/*3.崩溃
//在局部变量申请堆内存,没有改变str的指向
void mac(char *p)
{
char* t;
t=(char*)malloc(sizeof(char)*100);
p=t;
}
int main()
{
char *str=NULL;//str指向地址为空
char array[]="abcdef";
mac(str);
strcpy(str,array);
cout<<str;
free(str);
str=NULL;
}*/
/*4.正常输出
void mac(char *&p)//引用
{
char*
strcpy时如何有效的在堆区申请内存
最新推荐文章于 2023-11-19 12:44:23 发布
本文通过多个示例探讨了在C++中使用strcpy时如何在堆区动态分配内存,避免程序崩溃。重点在于传递指针的引用,确保str能够指向新分配的内存区域,从而正确复制字符串。
摘要由CSDN通过智能技术生成