c++各种函数随笔记录

进程线程ID相关

PID:每个线程都有自己的PID,唯一
TID:同一进程下的线程编号,同一进程中唯一,跨进程不唯一

获取线程pid

  • getpid()得到的是进程的pid,在内核中,每个线程都有自己的PID,要得到线程的PID,必须用syscall(SYS_gettid);
#define __NR_gettid      224  
tid = syscall(__NR_gettid);

获取线程tid

  • pthread_self函数获取的是线程ID,线程ID在某进程中是唯一的,在不同的进程中创建的线程可能出现ID值相同的情况。
std::cout << "tid:" << pthread_self() << std::endl;

sprintf

把东西写入字符数组

sprintf(buf, "%ld", tu / 1000)
//把 tu/1000写入buf,%ld表示以长整型十进制格式输出(long int) 

snprintf(char *str, size_t size, const char *format, ...)

C 库函数 int snprintf(char *str, size_t size, const char *format, ...) 设将可变参数(...)按照 format 格式化成字符串,并将字符串复制到 str 中,size 为要写入的字符的最大数目,超过 size 会被截断。

int wn = snprintf(_value_buf[field_index], GlobalParameter::kMaxRecordFieldValueSize, "%s", value);

sizeof()和malloc_size()

看似都是返回一个对象的大小,实则区别如下
The sizeof the object is how much space it requires for that object to be stored in memory. The malloc_size is how much space was actually allocated for it (for example, in a memory allocation system with fixed-size pools, you might be allocated a different amount depending on how much other memory was in use).

realloc() 重新分配内存空间

void* realloc (void* ptr, size_t size);

  • 参数说明:ptr 为需要重新分配的内存空间指针,size 为新的内存空间的大小。
  • realloc() 对 ptr 指向的内存重新分配 size 大小的空间,size 可比原来的大或者小,还可以不变(如果你无聊的话)realloc的实现,它所表达的含义基本是相同的:它尽量在原来分配好的地址位置重新分配,如果原来的地址位置有足够的空余空间完成重新分配,那么它返回的新地址与传入的旧地址相同;否则,它分配新的地址块,并进行数据搬迁。参见(http://man.cx/realloc%E3%80%82)
void *new_ptr = realloc(ptr, new_size);
if (!new_ptr) {
    // 错误处理。
}
ptr = new_ptr

你可能感兴趣的:(c++各种函数随笔记录)