由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Programming版 - VC++里一个函数有参数[out]LPWSTR p要不要初始化?
相关主题
C++ Interview Questionstatic variable存在heap还是stack?
sizeof(string)问个简单的memory allocation 的问题。
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)vector< vector > > 怎么初始化?
一个windows编程问题a=(char **)malloc(12*sizeof(char *)) 是什么意思?
一个古怪的C程序运行错误。再问一个free()的问题
char s[]和char *ps的不同[合集] C++的弱问题
请教 C/C++ 指向多维数组的指针的问题为什么有点函数声明的参数类型但是没有变量名呢?
g++ default optimization error这个怎么allocate memory?
相关话题的讨论汇总
话题: pname话题: lpwstr话题: out话题: 512
进入Programming版参与讨论
1 (共1页)
r*****s
发帖数: 985
1
比如说
HRESULT GetWhatever(
[in] ULONG abc,
[out] LPWSTR pName);
这个pName要不要先alloc一块memory,还是assume GetWhatever会给分配一块内存?
BTW,这个GetWhatever是.NET的API,我没法看到它怎么实现的。
谢谢!
P.S. 我是给pName一个array的
wchar_t pName[512];
但是运行起来会有
Stack around the variable "pName" was corrupted的run time error. 我想是不是这
个GetWhatever写到pName分配的memory外面了?
X****r
发帖数: 3557
2
你想想就知道了,就算GetWhatever想帮你分配一块内存,它也得能把这个内存的地址
传回给你啊。
LPWSTR就是wchar_t*,显然不可能啊。
一般来说GetWhatever的文档里会说你需要给他多大的内存,如果不是一个调用者可以
预先确知
的值,那么一般来说要么你把内存大小也传进去(abc是不是干这个的?),这样如果你
给它的不够
大它就会返回错误代码;要么另外有一个函数GetWhateverSize之类的告诉你需要多大
的内存。

【在 r*****s 的大作中提到】
: 比如说
: HRESULT GetWhatever(
: [in] ULONG abc,
: [out] LPWSTR pName);
: 这个pName要不要先alloc一块memory,还是assume GetWhatever会给分配一块内存?
: BTW,这个GetWhatever是.NET的API,我没法看到它怎么实现的。
: 谢谢!
: P.S. 我是给pName一个array的
: wchar_t pName[512];
: 但是运行起来会有

r*****s
发帖数: 985
3
多谢。我想的也是这样。就是偶尔有那个stack around the variable was corrupted的
runtime error。感觉上还是读写array out of bound之类的问题?还有什么主意吗?
具体来说IMetaDataImport::GetTypeDefProps
HRESULT GetTypeDefProps (
[in] mdTypeDef td,
[out] LPWSTR szTypeDef,
[in] ULONG cchTypeDef,
[out] ULONG *pchTypeDef,
[out] DWORD *pdwTypeDefFlags,
[out] mdToken *ptkExtends
);
MSDN doc里没说啊。
是不是.NET里type name maximal size = 512?
我是给了个wchar_t szTypeDef[512];

【在 X****r 的大作中提到】
: 你想想就知道了,就算GetWhatever想帮你分配一块内存,它也得能把这个内存的地址
: 传回给你啊。
: LPWSTR就是wchar_t*,显然不可能啊。
: 一般来说GetWhatever的文档里会说你需要给他多大的内存,如果不是一个调用者可以
: 预先确知
: 的值,那么一般来说要么你把内存大小也传进去(abc是不是干这个的?),这样如果你
: 给它的不够
: 大它就会返回错误代码;要么另外有一个函数GetWhateverSize之类的告诉你需要多大
: 的内存。

X****r
发帖数: 3557
4
你把这个512作为cchTypeDef传进去了吗?
还有其它的参数你传对了吗?

corrupted的

【在 r*****s 的大作中提到】
: 多谢。我想的也是这样。就是偶尔有那个stack around the variable was corrupted的
: runtime error。感觉上还是读写array out of bound之类的问题?还有什么主意吗?
: 具体来说IMetaDataImport::GetTypeDefProps
: HRESULT GetTypeDefProps (
: [in] mdTypeDef td,
: [out] LPWSTR szTypeDef,
: [in] ULONG cchTypeDef,
: [out] ULONG *pchTypeDef,
: [out] DWORD *pdwTypeDefFlags,
: [out] mdToken *ptkExtends

r*****s
发帖数: 985
5
是的,
还有一个弱智问题,
wchar_t wszTypeDef[512];
请问直接给
cchTypeDef=512;

cchTypeDef=sizeof(wszTypeDef)/sizeof(wszTypeDef[0]);
应该没什么区别吧?
实在搞不懂怎么corrupted的

【在 X****r 的大作中提到】
: 你把这个512作为cchTypeDef传进去了吗?
: 还有其它的参数你传对了吗?
:
: corrupted的

1 (共1页)
进入Programming版参与讨论
相关主题
这个怎么allocate memory?一个古怪的C程序运行错误。
stack/heap corruptionchar s[]和char *ps的不同
fread/fwrite有big/small endian问题吗?请教 C/C++ 指向多维数组的指针的问题
gdb with big core fileg++ default optimization error
C++ Interview Questionstatic variable存在heap还是stack?
sizeof(string)问个简单的memory allocation 的问题。
在子函数内开内存,返回主函数指针然后释放空间是不是很糟糕的(转载)vector< vector > > 怎么初始化?
一个windows编程问题a=(char **)malloc(12*sizeof(char *)) 是什么意思?
相关话题的讨论汇总
话题: pname话题: lpwstr话题: out话题: 512