memcpy 函数
#include <string.h>
void * memcpy (void * dest, const void * src, size_t n);
该函数从 src 地址起,开始拷贝 n 个字节的数据到 dest。若 dest 有数据,则覆盖。
char * target = (char*) malloc (sizeof(char)*N);
memcpy(target, "0123456789", sizeof(char)*N);
puts(target);
free(target);
puts 函数
#include <stdio.h>
int puts(const char *s)
该函数只能输出字符串,其作用于printf("%s\n", s);
相同。其中,s可以是一个字符指针变量、字符数组名,或直接是一个字符串常量,其功能是将字符串中输出到屏幕,直到遇到'\0'
(字符串结束标志符)才会停止。
free 函数
free 的次数要与 malloc 匹配,即次数相等。
指针被 free 释放之后,指针变量本身并没有被删除,需要将指针 p 置为 NULL,从而杜绝非法使用;即防止其变成“野指针”。
指针只是一个变量,只有程序结束后,才会被销毁。通过 free 函数释放内存空间后,指向这片空间的指针仍存在,只是其指向的这块内存是不合法的。
Map的比较
使用std::greater(),从大到小排序
std::vector< std::pair<float, int> > vec;
vec.resize(10);//这里假设已经赋值了,实际上没有
std::partial_sort(vec.begin(), vec.begin() + topk, vec.end(),
std::greater< std::pair<float, int> >());
工程中输出到屏幕中
fprintf(stderr, "out's shape %d \n", 1000)