小编Jan*_*aka的帖子

Stack中的动态数组?

它是否正确 ?这是用g ++(3.4)成功编译的.

int main()
{
    int x = 12;
    char pz[x]; 
}

c++

16
推荐指数
5
解决办法
2万
查看次数

为什么相同的代码在java中的工作方式不同?

我在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)

c java

9
推荐指数
1
解决办法
396
查看次数

在回调函数中安全地删除调用者对象

来自图书馆的代码段:

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基础库的类可以由另一个库( …

c++ oop design-patterns

6
推荐指数
1
解决办法
977
查看次数

-static-libasan 出现未定义符号错误

我使用地址清理程序来清理我的应用程序,该应用程序与 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)

c++ soci address-sanitizer

4
推荐指数
1
解决办法
4606
查看次数

标签 统计

c++ ×3

address-sanitizer ×1

c ×1

design-patterns ×1

java ×1

oop ×1

soci ×1