gpt4 book ai didi

visual-studio-2010 - 变量 'xyz' 周围的堆栈已损坏

转载 作者:行者123 更新时间:2023-12-05 00:06:48 24 4
gpt4 key购买 nike

我试图让我在网站上找到的一些简单的代码在 Windows Vista 64 上的 VC++ 2010 中工作:

#include "stdafx.h"
#include <windows.h>


int _tmain(int argc, _TCHAR* argv[])
{
DWORD dResult;
BOOL result;
char oldWallPaper[MAX_PATH];

result = SystemParametersInfo(SPI_GETDESKWALLPAPER, sizeof(oldWallPaper)-1, oldWallPaper, 0);

fprintf(stderr, "Current desktop background is %s\n", oldWallPaper);

return 0;
}

它确实可以编译,但是当我运行它时,我总是收到此错误:
Run-Time Check Failure #2 - Stack around the variable 'oldWallPaper' was corrupted.

我不确定出了什么问题,但我注意到,oldWallPaper 的值看起来像“C\0:\0\0U\0s\0e\0r\0s[...]”——我是想知道所有的\0 来自哪里。
  • 我的一个 friend 在 windows xp 32(也是 VC++ 2010)上编译它并且能够毫无问题地运行它

  • 任何线索/提示/意见?

    谢谢

    最佳答案

    文档不是很清楚。返回的字符串是 WCHAR,每个字符两个字节而不是一个,因此您需要分配两倍的空间,否则会导致缓冲区溢出。尝试:

    BOOL result; 
    WCHAR oldWallPaper[(MAX_PATH + 1)];

    result = SystemParametersInfo(SPI_GETDESKWALLPAPER,
    _tcslen(oldWallPaper), oldWallPaper, 0);

    也可以看看:

    http://msdn.microsoft.com/en-us/library/ms724947(VS.85).aspx

    http://msdn.microsoft.com/en-us/library/ms235631(VS.80).aspx (字符串转换)

    关于visual-studio-2010 - 变量 'xyz' 周围的堆栈已损坏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2828387/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com