它是否正确 ?这是用g ++(3.4)成功编译的.
int main()
{
int x = 12;
char pz[x];
}
我在java和C中编写了以下代码.但是这些程序的输出是不同的.Java应用程序给出了21和C应用程序给出了22(我使用GCC编译器).
你能描述一下吗?
这是JAVA代码.
class test
{
public static void main(String args[])
{
int a =5;
int b = (++a) + (++a) + (++a);
System.out.println(b);
}
}
Run Code Online (Sandbox Code Playgroud)
这是C代码.
#include <stdio.h>
int main( int argc, const char* argv[] )
{
int a =5;
int b = (++a) + (++a) + (++a);
printf("%d \n",b);
}
Run Code Online (Sandbox Code Playgroud) 来自图书馆的代码段:
class Client{
public:
class CallBack {
public:
virtual void onData(Client* caller, std::string& data) =0;
};
Client(CallBack* callback):m_callBack(callback){}
virtual ~Client(){}
void onData(std::string data) {
m_callBack->onData(this, data);
m_totalDataVol += data.size();
}
private:
CallBack* m_callBack;
int m_totalDataVol = 0;
}
Run Code Online (Sandbox Code Playgroud)
应用程序的代码段:
class AppHandler: public Client::Callback {
void onData(Client* caller, std::string& data) {
/* Some complex logic and check certain conditions*/
delete caller; // Application will crash, due to
// accessing member of deleted object (m_totalDataVol)
}
}
Run Code Online (Sandbox Code Playgroud)
另外,Caller对象(Client类的实例)由应用程序拥有,而Application没有限制删除它.
我该如何克服这个问题?
非常复杂的场景:
Client基础库的类可以由另一个库( …
我使用地址清理程序来清理我的应用程序,该应用程序与 SOCI 链接。但是在使用 Oracle 时会提示 followijg 错误消息。
./SociUT: symbol lookup error: /home/testhome/libs/libsoci_oracle.d.so.1.4.18: undefined symbol: __asan_unregister_globals
Run Code Online (Sandbox Code Playgroud)
这是应用程序的构建输出
/home/rel/GCC/asan-gcc-4.9.3/bc0232/bin/g++ -std=c++11 -g3 -static-libasan -fsanitize=address -fno-omit-frame-pointer -L/home/mt_1/4/4.7.c/build/bc0397/tech/MB/link/API/63 -L/usr/lib64 -L/usr/lib64 -L/home/janaka077/mt-git/mt-database/mt_1/database_SOCI_Core/bin -L/usr/local/boost_1_59_0/stage/lib -L/usr/local/boost_1_59_0/stage/lib -L/usr/local/gtest-1.7.0/lib/.libs -o SociUT Main.o version.o -lmb.d -lrdmacm -libverbs -lxml2 -lmsoci.d -lboost_date_time -lboost_filesystem -lboost_system -lboost_serializion -lboost_thread -lboost_chrono -lgtest -lz -lnsl -lrt -ldl -lz -lcrypt -lnuma
Run Code Online (Sandbox Code Playgroud)