Итак, у меня есть 2 фрагмента кода, один из которых работает, а другой нет.Первая часть была просто тестом, чтобы выяснить, останется ли указатель на символ действительным после того, как он будет возвращен из локального распределения.По какой-то причине это работает:
char* test(){
char* rawr="what";
return rawr;
}
Но этот не работает:
char* folderfromfile(char* filz) //gets the folder path from the file path
{
//declarations
int lastslash=-1;
int i =0;
char rett[256];
for(i;(int)filz[i]!=0;i++)
if(filz[i]=='\\')
lastslash=i; //records the last known backslash
if(lastslash==-1)
return ""; //didn't find a backslash
for(i=0;i<=lastslash;i++)
rett[i]=filz[i]; // copies to new string
rett[i] =0; //end of string
cout << &rett << "====" << rett << endl;
system("pause>nul");//pause so i can watch over the memory before it deallocates
return rett;
}
Могу поспорить, что есть лучший способ выполнить эту задачу, удалив имя файла изполный путь, но сейчас я просто пытаюсь выяснить, почему этот указатель на символ удаляется, а другой - нет.Если бы мне пришлось угадывать, я бы сказал, потому что я объявил это по-другому, или потому что он больше.Да, я мог бы просто передать еще один указатель на символ в качестве аргумента этой функции, но это не ответило бы на мой вопрос.