以下のコードを負の int 値で実行すると、セグメンテーション違反が発生します。なぜこれが起こっているのかをトラブルシューティングする方法に困惑しています。
このメソッドの目的は、符号付きをバイナリ文字列表現に変換することです。この関数は正の数に対して機能しますが、負の数に対してセグメンテーション違反を起こします
関数呼び出し:
int_to_binary(-1, "00000000000000000000000000000000\0");
ソース:
#include <stdlib.h>
#include <string.h>
#define BUFFER_SIZE 33
int int_to_binary(int input, char* output)
{
output += BUFFER_SIZE - 1;
while(input)
{
--output;
if(input & 1)
{
(*output)++;
}
input >>= 1;
}
return 0;
}
int が 0 に等しくない場合にのみポインターをデクリメントしています。これは、変換する値がまだあることを意味します。Linux でこれをデバッグする方法についてのヘルプをいただければ幸いです。