我有一段代码是这样的
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本来分配的内存大小是一个字符,后来赋了一个字符串,这样是否越界了?