Это мой код на C++.
По мне, это должно дать выход:
а
Garbage
а
Но он дает выход:
а
мусора
мусорВ функции char **() динамическое распределение массива char дает нежелательный результат
#include<bits/stdc++.h>
using namespace std;
char **func()
{
char* PA = new char[10];
PA[0]='a';
PA[1]='b';
PA[2]='c';
PA[3]='\0';
printf("%s\n",PA);
printf("Garbage\n");
char **PPA = &PA;
return PPA;
}
int main()
{
printf("%s\n",*func());
return 0;
}
Где я делаю неправильно ?
Вы возвращаете адрес локальной переменной 'PA'. – mch
Возвращаемый локальный адрес переменной UB. Период. –
http://stackoverflow.com/q/31816095/560648 –