C ++ Win32,未处理的异常访问冲突写入

时间:2015-02-12 07:39:42

标签: c++ arrays pointers char

我有以下代码:

    TCHAR szAppName[] = TEXT("HellowWin");

    TCHAR *trTemp = L" ";
    *trTemp= szAppName[5];

基本上我在这里做的是我试图在szAPPName的索引5处分配“值”来替换指针trTemp所代表的值,但我得到了访问冲突错误。

任何想法?

您可以在下面看到完整的代码:

#include <Windows.h>
#include <stdio.h>
#include "stdafx.h"
LRESULT CALLBACK WndProc (HWND, UINT, WPARAM, LPARAM);

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, PSTR szCmdLine, int iCmdShoe)
{
        TCHAR szAppName[] = TEXT("HellowWin");

        TCHAR *trTemp = L" ";
        *trTemp= szAppName[5];
}

2 个答案:

答案 0 :(得分:2)

TCHAR *trTemp = L" ";

指定trTemp指向常量。该常量将位于代码段中的某个位置。当你尝试覆盖它时,O / S并不喜欢它。

TCHAR trTemp[2]={L' ',L'\0'};

应该看对你。

答案 1 :(得分:2)

字符串文字是只读的。写给他们是不明确的行为。将字符串文字指定给指针时,应添加const

const wchar_t *trTemp = L" ";

如果要写入变量,请将其声明为数组,以便它保存字符串文字内容的副本,从而可写

wchar_t trTemp[] = L" ";

(请明确使用wchar_t而不是那些宏。)