У меня есть следующая функция.
129 string cmdline::compile_sOpt(const cl_option *options)
130 {
131 assert(options != MEM0x0);
132
133 string sOpt;
134 int i =0;
135 while(options[i].lo_name != MEM0x0){
136 sOpt += options[i].so_name;
137 if(options[i].has_arg == required_argument ||
138 options[i].has_arg == optional_argument)
139 sOpt += GC_GETOPT_ARG;
140 ++i;
141 }
142
143 return sOpt;
144 }
При возврате этой функции возникает следующая ошибка.
*** glibc detected *** ./a.out: malloc(): memory corruption: 0x000000000133c1a0 ***
Я прокомментировал весь код и написал следующее, но ошибка все еще сохраняется.
string s;
return s;
so_name и GC_GETOPT_ARG оба являются const char. В gdb sOpt никогда не имеет значения.
Заранее спасибо.
РЕДАКТИРОВАТЬ: Спасибо за указатели. Я понял ошибку, и мне стыдно сказать, что я сделал это. Но ошибка была memset вне конца массива.
MEM0x0
определяется какNULL
AKA0
? - person user470379   schedule 19.03.2011lo_name
равнымMEM0x0
? - person user470379   schedule 19.03.2011