2015-02-12 14 views
0

我有下面的代码:C++的Win32,Unhanded异常访问违反写

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]; 
} 

回答

3

字符串文字是只读的。写给他们是未定义的行为。将字符串文字分配给指针时,应该添加const

const wchar_t *trTemp = L" "; 

如果要写入的变量,其声明为一个数组,使其持有的字符串的内容拷贝文字,因而可写

wchar_t trTemp[] = L" "; 

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

+0

谢谢,我正在使用一本旧书。它接近喜欢TCHAR符号。 – Pedrumj 2015-02-12 07:56:40

2
TCHAR *trTemp = L" "; 

分配trTemp指向一个常数。该常量将在代码段中的某处。当你尝试覆盖它时,O/S不喜欢它。

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

应该看你的权利。