#include <iostream>
using namespace std;
class Base
{
public:
Base(){cout <<"Base"<<endl;}
virtual ~Base(){cout<<"~Base"<<endl;}
virtual void foo(){ cout<<"foo base"<<endl;}
};
class Derived: private Base
{
public:
Derived(){cout<<"Derived"<<endl;}
virtual ~Derived(){cout<<"~Derived"<<endl;}
virtual void foo(){ cout<<"foo dervied"<<endl;}
};
int main(int argc, char *argv[])
{
Base *pb = new Derived;
Derived d;
d.foo();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
当我执行上面的示例程序时,我得到以下错误:protected.cpp:在函数'int main(int,char**)'中:protected.cpp:26:错误:'Base'是'Derived'的一个不可访问的基础
为什么不可能用基指针创建Derived对象????
所以我可以创建一个Derived类的instanse
Derived d
Derived d1= new Derived;
Run Code Online (Sandbox Code Playgroud)
但是从Base类指针创建实例就像
Base * b = new derived
Run Code Online (Sandbox Code Playgroud)
将失败.
这是因为当衍生出来并私有时,Derived不是来自Base的派生类.
它是否正确?????
我可以选择使用API EnumChildWindows或FindWindowEx中的任何一个.
有什么建议api更好的性能导向?
FindWindowEx内部是否使用EnumChildWindows来处理特定窗口?
我有一个成员变量声明为
CComPtr<IXMLDOMDocument2> m_spXMLDoc;
Run Code Online (Sandbox Code Playgroud)
XML文档就是这样创建的
CoCreateInstance(CLSID_DOMDocument, NULL, CLSCTX_INPROC_SERVER,
IID_IXMLDOMDocument2, (void**)&m_spXMLDoc));
Run Code Online (Sandbox Code Playgroud)
现在,当应用程序退出时,会抛出异常.Callstack指向p->Release()
~CComPtrBase() throw()
{
if (p)
p->Release();
}
Run Code Online (Sandbox Code Playgroud)
当我将鼠标悬停p在VS调试器中时,它指向一些有效的内存.
最后一个callstack指向msxm6中的异常
msxml6.dll!3d6cXX03()
Run Code Online (Sandbox Code Playgroud)
有什么建议,可能是什么原因?我不认为这是一个CComPtr问题.
我在 win32,c++ 中创建了一个服务。我能够创建该服务,但是当我尝试启动它时,出现以下错误。
[SC] StartService FAILED 1053:服务未及时响应启动或控制请求。
找到根本原因的最佳方法是什么,因为此错误消息没有传达任何有意义的信息
我昨天有电话采访问题.面试官问我是否遇到过任何具有挑战性的调试问题?我告诉他我曾经遇到过调试别人代码的问题,我花了3-4天才解决了这个问题.我使用Windbg,符号和崩溃转储来解决问题.
现在这足以告诉我了吗?面试官期待什么?
我不知道还有什么可说的,我在很长一段时间内遇到了这个问题,无法解释所有细节......
这个问题非常常见,我不确定它的正确答案是什么?
还有一个非常常见的问题:
您是否参与过多线程应用程序?你怎么能发现僵局?答:很好找到死锁,我们可以查看内存中进程的快照,并查看正在等待的线程.
接下来的问题:你能做些什么来避免死锁?
你们说什么?
考虑下课
class test
{
public:
test(int x){ cout<< "test \n"; }
};
Run Code Online (Sandbox Code Playgroud)
现在我想创建50个类测试对象的数组.我不能改变班级考试.
可以在堆或堆栈上创建对象.
在这种情况下,在堆栈上创建obj是不可能的,因为我们在类中没有默认构造函数
test objs(1)[50]; /// Error...
Run Code Online (Sandbox Code Playgroud)
现在我们可以考虑在这样的堆上创建objs ..
test ** objs = NULL;
objs = (test **) malloc( 50 * sizeof (test *));
for (int i =0; i<50 ; ++ i)
{
objs[i] = new test(1);
}
Run Code Online (Sandbox Code Playgroud)
我不想使用malloc.还有其他方法吗?
如果你们想到更多的解决方案,请发布它们......
我正在创建一个测试程序来测试程序的功能,它计算CPU利用率.
现在我想在CPU利用率为100%,50%0%等的不同时间测试该程序.
我的问题是如何使CPU能够利用到100%,也可以是> 80%.
我认为创建一个while循环就足够了
while(i++< 2000)
{
cout<<" in while "<< endl;
Sleep(10); // sleep for 10 ms.
}
Run Code Online (Sandbox Code Playgroud)
运行此后,我没有获得高CPU利用率.什么是可能的解决方案,使高CPU密集?
我正在尝试调试一些win32API,比如返回句柄的Createthread.如何在windbg中获取返回值?
我做了一些研究,发现返回值一般存储在EAx寄存器中.
如果我在CreateThread上放置断点,那么我可以进入Createthread的程序集,最终我会点击ret语句,这意味着Createthread正在返回.
此时我应该检查EAX寄存器的值以获取HANDLE值还是其他方式?
我们有互斥体对象的包装器。该包装器的构造函数创建一个互斥体。它还具有 Enter 和 Leave 函数,基本上调用 WaitForSingleObject 和 ReleaseMutex 。
现在程序线程正在执行多个函数,例如
void A()
{
mutexObj->Enter();
B();
mutexObj->Leave();
}
void B()
{
mutexObj->Enter();
C();
mutexObj->Leave();
}
Run Code Online (Sandbox Code Playgroud)
我看到线程在 B() 函数处停止。我读到的有关互斥体的内容是,我们可以从同一线程多次调用 WaitforSingleObjects,这就是为什么我的代码被阻塞的原因。
这是互斥锁的实现
CMutex::CMutex(const TCHAR *name)
: m_hMutex(CreateMutex(NULL, FALSE, name))
{
}
CMutex::~CMutex()
{
if (m_hMutex != NULL)
{
CloseHandle(m_hMutex);
m_hMutex= NULL;
}
}
bool Enter(DWORD milli= INFINITE){
HANDLE handles[1]= { m_hMutex };
return(MsgWaitForMultipleObjects(1,handles,FALSE, milli,QS_ALLINPUT) == WAIT_OBJECT_0);
}
void Leave(){ReleaseMutex(m_hMutex);}
Run Code Online (Sandbox Code Playgroud) 运行spring应用程序时出现以下错误.春天我很新,所以非常困在这里.需要一些帮助来解决这个问题,或者告诉我如何调试和解决此问题.我正在浏览互联网并在我的Pom文件中进行不同的组合.
14:08:34 [31m[WARN ][0;39m [36m[o.s.b.c.e.AnnotationConfigEmbeddedWebApplicationContext][0;39m [35m[][0;39m [1;34m[0;39mException encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean]: Factory method 'entityManagerFactory' threw exception; nested exception is java.lang.NoSuchMethodError: org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.setPersistenceUnitRootLocation(Ljava/lang/String;)V
14:08:34 [1;31m[ERROR][0;39m [36m[o.s.boot.SpringApplication][0;39m [35m[][0;39m [1;34m[0;39mApplication startup failed
org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'entityManagerFactory' defined in class path resource [org/springframework/boot/autoconfigure/orm/jpa/HibernateJpaAutoConfiguration.class]: Bean instantiation via factory method failed; nested exception …Run Code Online (Sandbox Code Playgroud) c++ ×7
winapi ×3
assembly ×1
atl ×1
com ×1
debugging ×1
exception ×1
inheritance ×1
java ×1
mutex ×1
return-value ×1
service ×1
spring ×1
spring-boot ×1
visual-c++ ×1
windbg ×1
windows ×1