стек проблема компиляции я уже получил qestion, я использую sourgery C++ набор инструментов, и компилятор оставить меня написать эту фразу:памяти кучи утечки и C
for(i=0;i<size_of_categories;i++){
size_t size_of_tmp = sizeof(char) * (HOSTLINK_CONFIG_STRING_MAX_LEN * (categories[i].key_len));
char tmp[size_of_tmp];
memset(tmp,0,(size_of_tmp));
get_hostlink_count[i]++;
if(categories[i].time == get_hostlink_count[i]){
if(format == CSV){
csv_this_category_values(categories,i,tmp,size_of_tmp);
strncat(buffer,tmp,buff_len);
}else if (format == JSON){
xi_json_this_category_values(categories,i,tmp,size_of_tmp);
js_this_cat = json_loads(tmp,JSON_DECODE_ANY,NULL);
json_array_extend(js_arr,js_this_cat);
json_array_clear(js_this_cat);
json_decref(js_this_cat);
}
get_hostlink_count[i] = 0;
}
//Free(tmp);
}
Мой вопрос заключается в следующем Alloc память sentece в стеке или в куче? Это может привести к утечке памяти, поскольку она выполнена в цикле for? Является ли это эквивалентом для создания malloc и в конце цикла Free?
size_t size_of_tmp = sizeof(char) * (HOSTLINK_CONFIG_STRING_MAX_LEN * (categories[i].key_len));
char tmp[size_of_tmp];
Вы _can_ объявляете массив переменной, не являющейся константой, в C++. – mah
и в C++ этот стек использования? – user2387829
@mah Вы уверены? Я имею в виду, что он был в стандарте, но, видимо, > нет стандартного C++, когда-либо принятого VLA от C99, поэтому технически факт допуска VLA в C++ является расширением g ++. см. [Этот ответ] (http://stackoverflow.com/a/5730286/2640170) ... – PoByBolek