我正在研究一些奇怪的代码,对我而言,这不是一段很好的代码.
PIP_ADAPTER_INFO pAdapterInfo=(PIP_ADAPTER_INFO)new
char[sizeof(IP_IP_ADAPTER_INFO)];
.
.
.
delete []pAdapterInfo;
Run Code Online (Sandbox Code Playgroud)
这里PIP_ADAPTER_INFO是指向struct IP_IP_ADAPTER_INFO的指针,IP_IP_ADAPTER_INFO的大小是640.
我期待在delete [] pAdapterInfo调用中崩溃.但是没有崩溃.我写了一个小测试代码.
class TestClass
{
public:
/* TestClass()
{
}
~TestClass()
{
}*/
public:
int array[10];
};
int main (int ac, char **av)
{
TestClass *myptr=(TestClass*) new char[10];
delete []myptr;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
我所看到的 :
即使我看到反汇编,但在上述两种情况下都是不同的
/*****************************************************************/
/********Compiler provided c'tor and d'tor ***********************/
/*****************************************************************/
28: TestClass *myptr=(TestClass*) new char[10];
00401268 push 0Ah
0040126A call operator new (004082d0)
0040126F add esp,4
00401272 mov dword ptr [ebp-8],eax
00401275 …Run Code Online (Sandbox Code Playgroud) 我是一名C++程序员,现在正在开发一个C#项目.
我试图在下面的片段中理解为什么即使函数正在改变它的值,字符串的值也不会改变,我认为它是一个对象并将作为参考传递.
public class TestClass
{
public TestClass(String passedStr)
{
passedStr = "Change me";
}
}
class Program
{
static void Main(string[] args)
{
String aString="I am what i am";
TestClass obj = new TestClass(aString);
Console.WriteLine(aString);
}
}
Run Code Online (Sandbox Code Playgroud)
但是用户定义的类的行为是不同的.
public class TestClass
{
private int x;
public int ID
{
get
{
return x;
}
set
{
x = value;
}
}
public TestClass(int a)
{
x = a;
}
}
public class Tester
{
public Tester(TestClass obj)
{
obj.ID …Run Code Online (Sandbox Code Playgroud) 我看到catch(...)没有捕获所有异常,并且在最终用户上抛出恼人的pop.
size_t pos;
char *ptrDir="c:\\test";
std::string strDir =
strDir.erase(strlen(ptrDir) - 1);
pos = strDir.find("Test");
try
{
std::string strPat = strDir.substr(pos);
}
catch(...)
{
std::cout<<"I am hiding Exception";
}
Run Code Online (Sandbox Code Playgroud)
我使用的是Visual Studio 2005,Windows XP.
注意:代码是故意生成异常.这是一个测试代码
我正在尝试从中提取日期时间信息
"2012/04/03 10:06:21:611747"
Run Code Online (Sandbox Code Playgroud)
使用格式
String dateformat = @"yyyy/mm/dd hh:mm:ss:ffffff";
Run Code Online (Sandbox Code Playgroud)
获得例外 - 任何帮助表示赞赏.
完整代码
String dateformat = @"yyyy/mm/dd hh:mm:ss:ffffff";
readonly CultureInfo _provider = CultureInfo.InvariantCulture;
DateTime dateTime = DateTime.ParseExact(line, dateformat, _provider);
Run Code Online (Sandbox Code Playgroud)