C: Возвращение строки из функции

У меня есть функция, которая возвращает строку:

const *char getMyPassword()
{
    return "mysecretpassword";
}

Ну, она работала отлично, но я обнаружил, что если бы я запустил «строки» в системах Unix он отображается в списке .. нехорошо.

Как проще всего его заменить? Функция находится в библиотеке, и я хочу, чтобы она оставалась гибкой. Теперь я начал выполнять mallocing внутри функции, и строка в строках исчезла. Однако когда я смогу освободить его снова?

char * getMyPassword()
{
unsigned char arr[] = { 'p', 'a', 's', 's', 'w', 'o', 'r' , 'd', '\0' };
char *return_arr = malloc(sizeof(arr));
strcpy(return_arr, arr);
return return_arr;

}

Если бы я должен был выполнить malloc раньше и передать указатель, то как я мог бы узнать размер раньше, поскольку размер пароля известен только внутри функции?

Как план BI может передавать огромный массив, но это кажется не очень элегантным. Как мне подойти к этому?

РЕДАКТИРОВАТЬ: Я добавил strcpy (return_arr, arr). У меня действительно было это в исходном коде, но я забыл об этом здесь.

6
задан Frank Vilea 11 October 2011 в 22:36
поделиться