次のコードがあるとします。
#include "stdafx.h"
#include "string.h"
static char *myStaticArray[] = {"HelloOne", "Two", "Three"};
int _tmain(int argc, _TCHAR* argv[])
{
char * p = strstr(myStaticArray[0],"One");
char hello[10];
memset(hello,0,sizeof(hello));
strncpy(hello,"Hello",6);
strncpy(p,"Hello",3); // Access Violation
return 0;
}
myStaticArray[0] のアドレスに書き込もうとしたまさにその時点でアクセス違反が発生しています。なぜこれが問題なのですか?
背景: 私は主に C# 開発者として古い C++ を C# に移植しているので、私の無知を許してください! このコードは古いビルドでは明らかに問題ではなかったので、混乱しています...