我有一段代码是这样的
int* my_fun_1()
{
int arry[]={1,2};
return arry;}int* my_fun_2()
{
static int arry[]={1,2};
return arry;}void fun()
{
int *p1=my_fun_1();
int *p2=my_fun_2();}
请问尚需代码有什么问题吗?我知道对于my_fun_1()函数,
是错的,但my_fun_2();呢
还有一个问题是
void my_fun3()
{
char *p1=new char('1');
p1="123456789";
}
请问对于my_fun3()函数中的p1这样赋值对吗,p1本来分配的内存大小是一个字符,后来赋了一个字符串,这样是否越界了?
int* my_fun_1()
{
int arry[]={1,2};
return arry;}int* my_fun_2()
{
static int arry[]={1,2};
return arry;}void fun()
{
int *p1=my_fun_1();
int *p2=my_fun_2();}
请问尚需代码有什么问题吗?我知道对于my_fun_1()函数,
是错的,但my_fun_2();呢
还有一个问题是
void my_fun3()
{
char *p1=new char('1');
p1="123456789";
}
请问对于my_fun3()函数中的p1这样赋值对吗,p1本来分配的内存大小是一个字符,后来赋了一个字符串,这样是否越界了?
my_fun_3()中的p1 越界了
p1并没有越界,但是原来用new分配的内存会泄漏。