我有一個A類別:
定義了一個結構體
typedef struct { int sockfd; on_av_frame_cb av_frame_cb; on_av_frame_cb rtp_cb; on_error_cb error_cb; uint8_t *p_buf; uint8_t *v_buf; uint8_t *a_buf; int rtp_flag; }udp_client_t;
然後我再B類中呼叫:
static udp_client_t client; int jldv_create_client(int src_port,int port ,const char *dst_ip){ udp_client_t *udpClient = &client; assert(udpClient != NULL); const char *c_ip = dst_ip; memset(udpClient, 0, sizeof(udp_client_t)); int ret = create_client(src_port, port, c_ip, &udpClient); if (ret != 0) { goto err_output; } udpClient->av_frame_cb = (on_av_frame_cb )onVideoFrame; udpClient->error_cb = on_error; if (rtp_create(&udpClient) < 0) { ///问题所在之处 goto err_output; } printf("rtp_client:%d \n",udpClient->rtp_flag); return 0; err_output: destroy_client(udpClient); return -1; }
在上述的問題所在之處中,我使用了C類別的方法:
int rtp_create(udp_client_t **data) { logi("%s", __func__); udp_client_t *udpClient = *data; if(udpClient) { udpClient->rtp_flag = 1; memset(&rtp_cxt, 0, sizeof(rtp_context_t)); int ret = init_server(); if (ret < 0) { return -1; } rtp_cxt.nalu = alloc_nalu(MAX_FRAME_SIZE);//为结构体nalu_t及其成员buf分配空间。返回值为指向nalu_t存储空间的指针 if (!rtp_cxt.nalu) { loge("alloc nalu failed"); return -2; } } else { loge("%s: data is null", __func__); return -3; } printf("udpClient after==>%d \n",udpClient->rtp_flag); return 0; }
然而印刷的結果卻是:
udpClient after==>1 rtp_client:0
這是為什麼?
是我使用的不對嗎?求解各位大神。 。
邏輯完全有可能這樣走的:
那麼輸出 1 和 0,有問題嗎?