質問: 関数の引数でポインタのポインタを渡したいのですが・・・ 関数の引数でポインタのポインタを渡したいのですが、 渡す前後でアドレスが壊れてしまっています。 もし、なにか思い当たることがある人がいましたら、 必要事項があれば補足します。 よろしくお願いします。
回答: 参考までに正しい例。 int init_check_func(char *buf, char **cbuf, int arrange){ return 0; } int msgchk_func(char *buff){ int ret = 0; char *combuff[6]; for(int n = 0; n < 6; n++){ combuff[n] = (char*)calloc(8, 1); } strcpy(combuff[0], "error"); strcpy(combuff[1], "offline"); strcpy(combuff[2], "disable"); strcpy(combuff[3], "active"); strcpy(combuff[4], "warning"); strcpy(combuff[5], "down"); ret = init_check_func(buff, combuff, 6); for(n = 0; n < 6; n++){ free(combuff[n]); } return ret; } または、 typedef char char8[8]; int init_check_func(char *buf, char8 *cbuf, int arrange){ return 0; } int msgchk_func(char *buff){ int ret = 0; char combuff[6][8]; memset(combuff,'\0', sizeof combuff); strcpy(combuff[0], "error"); strcpy(combuff[1], "offline"); strcpy(combuff[2], "disable"); strcpy(combuff[3], "active"); strcpy(combuff[4], "warning"); strcpy(combuff[5], "down"); ret = init_check_func(buff, combuff, 6); return ret; } 長くてすみません。 ちなみに、okwebは行頭のスペースを削除してくれちゃうので、見にくいですね。 このようにメモリ配置とかの勉強ばっかして、実用プログラムをぜんぜん作ったことのないhaporunでした。 ちなみに、本職はvbです。