博客 / 詳情

返回

arm64上指針的問題

寫了一個很簡單的函數

void* get_pub_socket(void* ctx, char* pub_addr) {
    void* gen_pub_socket = zmq_socket(ctx, ZMQ_PUB);
    if (gen_pub_socket) {
        zmq_bind(gen_pub_socket, pub_addr);
        return gen_pub_socket;
    }
    return NULL;
}

運行時候總是段錯誤,gdb跟了一下發現指針返回之後就沒有訪問權限了,在裏面打印一下發現返回之後指針長度變短了,又是經典的在沒有聲明時候默認被變成int型了,在頭文件中添加上聲明 ,幷包進這個頭函數就好了,看樣子還是要打開告警當錯誤了,在cmake中打開可以使用

set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Werror")
user avatar
0 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.