在c ++中,我会这样做
class A
{
public:
virtual void stuff()
{
//something
}
};
class B : public A
public:
virtual void stuff()
{
//something2
A::stuff() //something
}
};
Run Code Online (Sandbox Code Playgroud)
我怎么用C#做这个?我试过了
public void stuff()
{
//something2
A.stuff(); //something
}
Run Code Online (Sandbox Code Playgroud)
但这不起作用
所以我可以做点什么
#ifdef MSVC
//do compiler specific code here
#endif
Run Code Online (Sandbox Code Playgroud) 当我写作
if(true)
{
Run Code Online (Sandbox Code Playgroud)
eclipse自动完成它
if(true)
{
//cursor here
}
Run Code Online (Sandbox Code Playgroud)
当我想写别人或者其他时,这会让人讨厌.有什么方法可以禁用它吗?
在C++中,我将得到函数的地址,并将前几个字节覆盖到jmp到我的函数,做一些事情,恢复原始字节,并调用原始函数.
我可以在C#中做这样的事吗?
我有两个问题 - (I)
code-fragment-1
if(<condition-statement>){
}
else if(<condition-statement-2>){
//statements-1
}
//statements-2
Run Code Online (Sandbox Code Playgroud)
代码片段-2-
if(<condition-statement>){
}
else{
if(<condition-statement-2>){
//statements-1
}
//statements-2
}
Run Code Online (Sandbox Code Playgroud)
以上两个代码片段是否相同?
(II)何时使用ifs(使用C++)?
代替
template <typename T>
void func(T arg) {/* something */}
Run Code Online (Sandbox Code Playgroud)
我们为什么不能这样做
template <T>
void func(T arg) {/* something */}
Run Code Online (Sandbox Code Playgroud)
来自cplusplus.com:
两个原型之间的唯一区别是使用关键字class或关键字typename.它的使用是模糊的,因为两个表达式具有完全相同的含义并且行为完全相同.
这对我来说似乎是不必要的样板.
我与原生dll交互的.NET进程抛出OutOfMemory异常.以下是!address -summary和--eeheap-gc coammands.这是否意味着它是管理泄漏还是原生泄漏?
0:000>!address -summary
ProcessParametrs 002f10a8,范围002f0000 003f0000
环境002f07f0,范围002f0000 003f0000
--------------------使用摘要--------------------------
TotSize( KB)Pct(Tots)Pct(Busy)用法
17773000(384460):18.33%22.25%:RegionUsageIsVAD
168aa000(369320):17.61%00.00%:RegionUsageFree
110fe000(279544):13.33%16.18%:RegionUsageImage
395fe000(940024):44.83 %54.41%:RegionUsageStack 396000
(3672):00.18%00.21%:RegionUsageTeb
7540000(120064):05.73%06.95%:RegionUsageHeap
0(0):00.00%00.00%:RegionUsagePageHeap
1000(4):00.00%00.00%:RegionUsagePeb
0 (0):00.00%00.00%:RegionUsageProcessParametrs
0(0):00.00%00.00%:RegionUsageEnvironmentBlock
Tot:7fff0000(2097088 KB)忙:69746000(1727768 KB)
--------------------类型摘要--------------------------
TotSize( KB)Pct(Tots)用法
168aa000(369320):17.61%:
15970000(353728):16.87%:MEM_IMAGE
47e9000(73636):03.51%:MEM_MAPPED
4f5ed000(1300404):62.01%:MEM_PRIVATE
--------------------状态摘要--------------------------
TotSize( KB)Pct(Tots)用法
303e1000(790404):37.69%:MEM_COMMIT
168aa000(369320):17.61%:MEM_FREE
39365000(937364):44.70%:MEM_RESERVE
最大的自由区域:基数0d8b1000 - 大小0010f000(1084 KB)
0:000>!EEHeap -gc
GC堆数:1
代0开始于0x425f776c
第1代开始于0x425f5a08
第2代开始于0x01881000
临时段分配上下文:无
段开始分配大小
01880000 01881000 0281ecf8 0x00f9dcf8(16375032)
12010000 12011000 12f83a04 0x00f72a04 (16198148)
1e0a0000 1e0a1000 1e734094 0x00693094(6893716)
41e80000 41e81000 427048d0 0x008838d0(8927440)
大对象堆从0x02881000
段开始分配大小
02880000 02881000 02a36958 0x001b5958(1792344)
13010000 13011000 137c0020 …
代码段:
void RunThread(void* unused_args)
{
PSECURITY_DESCRIPTOR sdsc;
ULONG size;
ConvertStringSecurityDescriptorToSecurityDescriptor("S:(ML;;NW;;;LW)", SDDL_REVISION_1, &sdsc, &size);
SECURITY_ATTRIBUTES sa;
sa.nLength = sizeof(sa);
sa.bInheritHandle = false;
sa.lpSecurityDescriptor = sdsc;
HANDLE pipe = CreateNamedPipe("\\.\pipe\mmaivpc_test_pipe", PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE, 255, 1024, 1024, 0, &sa);
DWORD error = GetLastError();
}
Run Code Online (Sandbox Code Playgroud)
如果你还没有从函数名中找到它,那么这个函数就会被调用_beginthread. GetLastError()正在回归ERROR_INVALID_NAME,我无法弄清楚为什么.
c++ ×4
.net ×2
c# ×2
templates ×2
visual-c++ ×2
cil ×1
eclipse ×1
hook ×1
if-statement ×1
java ×1
managed ×1
memory-leaks ×1
named-pipes ×1
oop ×1
sos ×1
winapi ×1
windbg ×1