这篇教程C++ tb_free函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中tb_free函数的典型用法代码示例。如果您正苦于以下问题:C++ tb_free函数的具体用法?C++ tb_free怎么用?C++ tb_free使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了tb_free函数的25个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: gb_device_skia_exitstatic tb_void_t gb_device_skia_exit(gb_device_impl_t* device){ // check gb_skia_device_ref_t impl = (gb_skia_device_ref_t)device; tb_assert_and_check_return(impl); // exit path if (impl->path) delete impl->path; impl->path = tb_null; // exit points if (impl->points) tb_free(impl->points); impl->points = tb_null; // exit paint if (impl->paint) delete impl->paint; impl->paint = tb_null; // exit canvas if (impl->canvas) delete impl->canvas; impl->canvas = tb_null; // exit bitmap if (impl->bitmap) delete impl->bitmap; impl->bitmap = tb_null; // exit it tb_free(impl);}
开发者ID:AlexShiLucky,项目名称:gbox,代码行数:29,
示例2: tb_regex_exittb_void_t tb_regex_exit(tb_regex_ref_t self){ // check tb_regex_t* regex = (tb_regex_t*)self; tb_assert_and_check_return(regex); // exit buffer if (regex->buffer_data) tb_free(regex->buffer_data); regex->buffer_data = tb_null; regex->buffer_maxn = 0; // exit results if (regex->results) tb_vector_exit(regex->results); regex->results = tb_null; // exit match data if (regex->match_data) pcre2_match_data_free(regex->match_data); regex->match_data = tb_null; // exit code if (regex->code) pcre2_code_free(regex->code); regex->code = tb_null; // exit it tb_free(regex);}
开发者ID:waruqi,项目名称:tbox,代码行数:26,
示例3: tb_aiop_ptor_exitstatic tb_void_t tb_aiop_ptor_exit(tb_aicp_ptor_impl_t* ptor){ // check tb_aiop_ptor_impl_t* impl = (tb_aiop_ptor_impl_t*)ptor; tb_assert_and_check_return(impl); // trace tb_trace_d("exit"); // exit file tb_aicp_file_exit(impl); // exit loop if (impl->loop) { tb_long_t wait = 0; if ((wait = tb_thread_wait(impl->loop, 5000)) <= 0) { // trace tb_trace_e("loop[%p]: wait failed: %ld!", impl->loop, wait); } tb_thread_exit(impl->loop); impl->loop = tb_null; } // exit spak tb_spinlock_enter(&impl->lock); if (impl->spak[0]) tb_queue_exit(impl->spak[0]); if (impl->spak[1]) tb_queue_exit(impl->spak[1]); impl->spak[0] = tb_null; impl->spak[1] = tb_null; tb_spinlock_leave(&impl->lock); // exit aiop if (impl->aiop) tb_aiop_exit(impl->aiop); impl->aiop = tb_null; // exit list if (impl->list) tb_free(impl->list); impl->list = tb_null; // exit wait if (impl->wait) tb_semaphore_exit(impl->wait); impl->wait = tb_null; // exit timer if (impl->timer) tb_timer_exit(impl->timer); impl->timer = tb_null; // exit ltimer if (impl->ltimer) tb_ltimer_exit(impl->ltimer); impl->ltimer = tb_null; // exit lock tb_spinlock_exit(&impl->lock); // exit it tb_free(impl);}
开发者ID:RockyShi,项目名称:tbox,代码行数:59,
示例4: gb_bitmap_exittb_void_t gb_bitmap_exit(gb_bitmap_ref_t bitmap){ // check gb_bitmap_impl_t* impl = (gb_bitmap_impl_t*)bitmap; tb_assert_and_check_return(impl); // exit data if (impl->is_owner && impl->data) tb_free(impl->data); impl->data = tb_null; // exit it tb_free(impl);}
开发者ID:AlexShiLucky,项目名称:gbox,代码行数:13,
示例5: tb_circle_queue_exittb_void_t tb_circle_queue_exit(tb_circle_queue_ref_t self){ // check tb_circle_queue_t* queue = (tb_circle_queue_t*)self; tb_assert_and_check_return(queue); // clear data tb_circle_queue_clear(self); // free data if (queue->data) tb_free(queue->data); // free it tb_free(queue);}
开发者ID:ljx0305,项目名称:tbox,代码行数:15,
示例6: tb_hash_map_exittb_void_t tb_hash_map_exit(tb_hash_map_ref_t hash_map){ // check tb_hash_map_impl_t* impl = (tb_hash_map_impl_t*)hash_map; tb_assert_and_check_return(impl); // clear it tb_hash_map_clear(hash_map); // free impl list if (impl->hash_list) tb_free(impl->hash_list); // free it tb_free(impl);}
开发者ID:luxuan,项目名称:tbox,代码行数:15,
示例7: tb_mutex_inittb_mutex_ref_t tb_mutex_init(){ // done tb_bool_t ok = tb_false; tb_spinlock_ref_t lock = tb_null; do { // make lock lock = tb_malloc0_type(tb_spinlock_t); tb_assert_and_check_break(lock); // init lock if (!tb_spinlock_init(lock)) break; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it tb_free(lock); lock = tb_null; } // ok? return (tb_mutex_ref_t)lock;}
开发者ID:waruqi,项目名称:tbox,代码行数:30,
示例8: tb_semaphore_init/* ////////////////////////////////////////////////////////////////////////////////////// * implementation */tb_semaphore_ref_t tb_semaphore_init(tb_size_t init){ // done tb_bool_t ok = tb_false; sem_t* semaphore = tb_null; do { // make semaphore semaphore = tb_malloc0_type(sem_t); tb_assert_and_check_break(semaphore); // init if (sem_init(semaphore, 0, init) < 0) break; // ok ok = tb_true; } while (0); // failed? if (!ok) { // exit it if (semaphore) tb_free(semaphore); semaphore = tb_null; } // ok? return (tb_semaphore_ref_t)semaphore;}
开发者ID:ljx0305,项目名称:tbox,代码行数:33,
示例9: tb_object_data_init_from_url/* ////////////////////////////////////////////////////////////////////////////////////// * interfaces */tb_object_ref_t tb_object_data_init_from_url(tb_char_t const* url){ // check tb_assert_and_check_return_val(url, tb_null); // init stream tb_stream_ref_t stream = tb_stream_init_from_url(url); tb_assert_and_check_return_val(stream, tb_null); // make stream tb_object_ref_t object = tb_null; if (tb_stream_open(stream)) { // read all data tb_size_t size = 0; tb_byte_t* data = (tb_byte_t*)tb_stream_bread_all(stream, tb_false, &size); if (data) { // make object object = tb_object_data_init_from_data(data, size); // exit data tb_free(data); } // exit stream tb_stream_exit(stream); } // ok? return object;}
开发者ID:AlexShiLucky,项目名称:tbox,代码行数:35,
示例10: tb_aiop_rtor_poll_exitstatic tb_void_t tb_aiop_rtor_poll_exit(tb_aiop_rtor_impl_t* rtor){ tb_aiop_rtor_poll_impl_t* impl = (tb_aiop_rtor_poll_impl_t*)rtor; if (impl) { // exit pfds tb_spinlock_enter(&impl->lock.pfds); if (impl->pfds) tb_vector_exit(impl->pfds); impl->pfds = tb_null; tb_spinlock_leave(&impl->lock.pfds); // exit cfds if (impl->cfds) tb_vector_exit(impl->cfds); impl->cfds = tb_null; // exit hash tb_spinlock_enter(&impl->lock.hash); if (impl->hash) tb_hash_exit(impl->hash); impl->hash = tb_null; tb_spinlock_leave(&impl->lock.hash); // exit lock tb_spinlock_exit(&impl->lock.pfds); tb_spinlock_exit(&impl->lock.hash); // free it tb_free(impl); }}
开发者ID:DonkeyWs,项目名称:tbox,代码行数:29,
示例11: tb_lo_scheduler_io_exittb_void_t tb_lo_scheduler_io_exit(tb_lo_scheduler_io_ref_t scheduler_io){ // check tb_assert_and_check_return(scheduler_io); // exit poller if (scheduler_io->poller) tb_poller_exit(scheduler_io->poller); scheduler_io->poller = tb_null;#ifndef TB_CONFIG_MICRO_ENABLE // exit timer if (scheduler_io->timer) tb_timer_exit(scheduler_io->timer); scheduler_io->timer = tb_null; // exit ltimer if (scheduler_io->ltimer) tb_ltimer_exit(scheduler_io->ltimer); scheduler_io->ltimer = tb_null;#endif // clear scheduler scheduler_io->scheduler = tb_null; // exit it tb_free(scheduler_io);}
开发者ID:waruqi,项目名称:tbox,代码行数:25,
示例12: tb_find_int_test/* ////////////////////////////////////////////////////////////////////////////////////// * test */static tb_void_t tb_find_int_test(){ __tb_volatile__ tb_size_t i = 0; __tb_volatile__ tb_size_t n = 1000; // init data tb_long_t* data = (tb_long_t*)tb_nalloc0(n, sizeof(tb_long_t)); tb_assert_and_check_return(data); // init iterator tb_array_iterator_t array_iterator; tb_iterator_ref_t iterator = tb_array_iterator_init_long(&array_iterator, data, n); // make for (i = 0; i < n; i++) data[i] = i; // find tb_size_t itor = tb_iterator_tail(iterator); tb_hong_t time = tb_mclock(); for (i = 0; i < n; i++) itor = tb_find_all(iterator, (tb_pointer_t)data[800]); time = tb_mclock() - time; // item tb_long_t item = itor != tb_iterator_tail(iterator)? (tb_long_t)tb_iterator_item(iterator, itor) : 0; // time tb_trace_i("tb_find_int_all[%ld ?= %ld]: %lld ms", item, data[800], time); // free tb_free(data);}
开发者ID:ljx0305,项目名称:tbox,代码行数:34,
示例13: tb_aiop_exittb_void_t tb_aiop_exit(tb_aiop_ref_t aiop){ // check tb_aiop_impl_t* impl = (tb_aiop_impl_t*)aiop; tb_assert_and_check_return(impl); // exit reactor if (impl->rtor && impl->rtor->exit) impl->rtor->exit(impl->rtor); // exit spak if (impl->spak[0]) tb_socket_exit(impl->spak[0]); if (impl->spak[1]) tb_socket_exit(impl->spak[1]); impl->spak[0] = tb_null; impl->spak[1] = tb_null; // exit pool tb_spinlock_enter(&impl->lock); if (impl->pool) tb_fixed_pool_exit(impl->pool); impl->pool = tb_null; tb_spinlock_leave(&impl->lock); // exit lock tb_spinlock_exit(&impl->lock); // free impl tb_free(impl);}
开发者ID:cdrr,项目名称:tbox,代码行数:28,
示例14: tb_vector_exittb_void_t tb_vector_exit(tb_vector_ref_t vector){ // check tb_vector_impl_t* impl = (tb_vector_impl_t*)vector; tb_assert_and_check_return(impl); // clear data tb_vector_clear(vector); // free data if (impl->data) tb_free(impl->data); impl->data = tb_null; // free it tb_free(impl);}
开发者ID:1060460048,项目名称:tbox,代码行数:16,
示例15: tb_sort_int_test_perf/* ////////////////////////////////////////////////////////////////////////////////////// * test */static tb_void_t tb_sort_int_test_perf(tb_size_t n){ __tb_volatile__ tb_size_t i = 0; // init data tb_long_t* data = (tb_long_t*)tb_nalloc0(n, sizeof(tb_long_t)); tb_assert_and_check_return(data); // init iterator tb_array_iterator_t array_iterator; tb_iterator_ref_t iterator = tb_iterator_make_for_long(&array_iterator, data, n); // make tb_random_clear(tb_null); for (i = 0; i < n; i++) data[i] = tb_random_range(tb_null, TB_MINS16, TB_MAXS16); // sort tb_hong_t time = tb_mclock(); tb_sort_all(iterator, tb_null); time = tb_mclock() - time; // time tb_trace_i("tb_sort_int_all: %lld ms", time); // check for (i = 1; i < n; i++) tb_assert_and_check_break(data[i - 1] <= data[i]); // free tb_free(data);}
开发者ID:richwu,项目名称:tbox,代码行数:33,
示例16: tb_heap_exittb_void_t tb_heap_exit(tb_heap_ref_t heap){ // check tb_heap_impl_t* impl = (tb_heap_impl_t*)heap; tb_assert_and_check_return(impl); // clear data tb_heap_clear(heap); // free data if (impl->data) tb_free(impl->data); impl->data = tb_null; // free it tb_free(impl);}
开发者ID:1060460048,项目名称:tbox,代码行数:16,
示例17: tb_object_datatb_object_ref_t tb_object_data(tb_object_ref_t object, tb_size_t format){ // check tb_assert_and_check_return_val(object, tb_null); // done tb_object_ref_t odata = tb_null; tb_size_t maxn = 4096; tb_byte_t* data = tb_null; do { // make data data = data? (tb_byte_t*)tb_ralloc(data, maxn) : tb_malloc_bytes(maxn); tb_assert_and_check_break(data); // writ object to data tb_long_t size = tb_object_writ_to_data(object, data, maxn, format); // ok? make the data object if (size >= 0) odata = tb_object_data_init_from_data(data, size); // failed? grow it else maxn <<= 1; } while (!odata); // exit data if (data) tb_free(data); data = tb_null; // ok? return odata;}
开发者ID:ahnan4arch,项目名称:tbox,代码行数:32,
示例18: g2_image_decoder_exittb_void_t g2_image_decoder_exit(g2_image_decoder_t* decoder){ if (decoder) { if (decoder->free) decoder->free(decoder); tb_free(decoder); }}
开发者ID:cosim,项目名称:gbox2,代码行数:8,
示例19: tb_aiop_rtor_epoll_exitstatic tb_void_t tb_aiop_rtor_epoll_exit(tb_aiop_rtor_impl_t* rtor){ tb_aiop_rtor_epoll_impl_t* impl = (tb_aiop_rtor_epoll_impl_t*)rtor; if (impl) { // exit events if (impl->evts) tb_free(impl->evts); impl->evts = tb_null; // exit fd if (impl->epfd) close(impl->epfd); impl->epfd = 0; // exit it tb_free(impl); }}
开发者ID:ahnan4arch,项目名称:tbox,代码行数:17,
示例20: tb_queue_buffer_exittb_void_t tb_queue_buffer_exit(tb_queue_buffer_ref_t buffer){ if (buffer) { if (buffer->data) tb_free(buffer->data); tb_memset(buffer, 0, sizeof(tb_queue_buffer_t)); }}
开发者ID:waruqi,项目名称:tbox,代码行数:8,
示例21: tb_database_sqlite3_statement_bind_exitstatic tb_void_t tb_database_sqlite3_statement_bind_exit(tb_pointer_t data){ // trace tb_trace_d("bind: exit: %p", data); // exit it if (data) tb_free(data);}
开发者ID:ljx0305,项目名称:tbox,代码行数:8,
示例22: tb_semaphore_exittb_void_t tb_semaphore_exit(tb_semaphore_ref_t self){ // check tb_atomic_t* semaphore = (tb_atomic_t*)self; tb_assert_and_check_return(semaphore); // free it tb_free(semaphore);}
开发者ID:siwuxian,项目名称:xmake,代码行数:9,
示例23: tb_sockdata_local_freestatic tb_void_t tb_sockdata_local_free(tb_cpointer_t priv){ tb_sockdata_ref_t sockdata = (tb_sockdata_ref_t)priv; if (sockdata) { tb_sockdata_exit(sockdata); tb_free(sockdata); }}
开发者ID:waruqi,项目名称:tbox,代码行数:9,
示例24: tb_object_data_exitstatic tb_void_t tb_object_data_exit(tb_object_ref_t object){ tb_object_data_t* data = tb_object_data_cast(object); if (data) { tb_buffer_exit(&data->buffer); tb_free(data); }}
开发者ID:luxuan,项目名称:tbox,代码行数:9,
示例25: tb_sockdata_exittb_void_t tb_sockdata_exit(tb_sockdata_ref_t sockdata){ // check tb_assert(sockdata); // exit socket data if (sockdata->data) tb_free(sockdata->data); sockdata->data = tb_null; sockdata->maxn = 0;}
开发者ID:waruqi,项目名称:tbox,代码行数:10,
注:本文中的tb_free函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ tb_mclock函数代码示例 C++ tb_check_return_val函数代码示例 |