【发布时间】:2015-08-31 17:01:23
【问题描述】:
我已经阅读了很多关于在 C 中返回指针的问题,但仍然对范围问题感到困惑。
由于调用了malloc,以下代码有效,并且一个可能的输出最终可能是Wide string: StackOverflow。
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <wchar.h>
static wchar_t *get_new_ptr(char *s)
{
size_t len = strlen(s);
wchar_t *ws = NULL;
ws = malloc((len + 1) * sizeof(wchar_t));
mbstowcs(ws, s, len);
ws[len] = '\0';
return ws;
}
int main(int argc, char *argv[])
{
wchar_t *wstr = NULL;
if (argv[1])
wstr = get_new_ptr(argv[1]);
wprintf(L"Wide string: %ls\n", wstr);
return 0;
}
因为ws 是本地声明的,所以wchar_t *ws 是否必须是static 才能安全地将内存地址返回给wstr?
【问题讨论】: