VC++中 char name[20] 和 name=new char[20] 有什么不同?
如题VC++中我使用charname[20]编译通过了,但是执行是就发生错误,运行不下去;而使用就可用了,name=newchar[20]两者有什么不同?Student:...
如题
VC++中我使用char name[20]编译通过了,但是执行是就发生错误,运行不下去;
而使用 就可用了,name=new char[20]
两者有什么不同?
Student::Student()
{
id=new char[10];
strcpy(id,"00000000");
name=new char[20];
strcpy(name,null);
sex=' ';
age=0;
score=0;
}
其中
const char *null=""; 展开
VC++中我使用char name[20]编译通过了,但是执行是就发生错误,运行不下去;
而使用 就可用了,name=new char[20]
两者有什么不同?
Student::Student()
{
id=new char[10];
strcpy(id,"00000000");
name=new char[20];
strcpy(name,null);
sex=' ';
age=0;
score=0;
}
其中
const char *null=""; 展开
展开全部
1. char name[20] 自动申请内存空间,也会自动释放内存空间。如:
char* func()
{
char name[20];
return name;
}
调用完 func 函数之后,name占用的内存空间被自动释放,修改 name 指向的内存空间将会造成程序崩溃。
---------------
2. name=new char[20] 动态申请内存空间,需要手动释放内存空间。
char* func()
{
char name[] = new char[20];
return name;
}
调用完 func 函数之后,name占用的内存空间没有被释放,可以正常使用 name 。
如果要手动释放 name 的内存空间,请使用 delete[] name; 。
char* func()
{
char name[20];
return name;
}
调用完 func 函数之后,name占用的内存空间被自动释放,修改 name 指向的内存空间将会造成程序崩溃。
---------------
2. name=new char[20] 动态申请内存空间,需要手动释放内存空间。
char* func()
{
char name[] = new char[20];
return name;
}
调用完 func 函数之后,name占用的内存空间没有被释放,可以正常使用 name 。
如果要手动释放 name 的内存空间,请使用 delete[] name; 。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询