内存分配与拷贝

realloc

先判断当前的指针是否有足够的连续空间,如果有,扩大mem_address指向的地址,并且将mem_address返回;如果空间不够,先按照newsize指定的大小分配空间,将原有数据从头到尾拷贝到新分配的内存区域,而后释放原来mem_address所指内存区域,同时返回新分配的内存区域的首地址。即重新分配存储器块的地址。

声明

void *realloc(void *ptr, size_t size)

参数

  • ptr — 指针指向一个要重新分配内存的内存块,该内存块之前是通过调用 malloc、calloc或realloc进行分配内存的。如果为空指针,则会分配一个新的内存块(未初始化),且函数返回一个指向它的指针。
  • size — 内存块的新的大小,以字节为单位。如果大小为 0,且ptr 指向一个已存在的内存块,则ptr所指向的内存块会被释放,并返回一个空指针。
  • 返回值
    该函数返回一个指针 ,指向重新分配大小的内存。如果请求失败,则返回 NULL。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h> /* printf, scanf, puts */
#include <stdlib.h> /* realloc, free, exit, NULL */
int main()
{
char *str;
/* 最初的内存分配 */
str = (char *) malloc(15);
strcpy(str, "jikexueyuan");
printf("String = %s, Address = %un", str, str);
/* 重新分配内存 */
str = (char *) realloc(str, 25);
strcat(str, ".com");
printf("String = %s, Address = %un", str, str);
free(str);
return(0);
}

私有、公有与保护(private/public/protected)

公有成员

可以被对象直接访问,可以被派生类直接访问。

私有成员

只能由类的成员间接访问,不能被派生类访问。

保护成员

只能由类的成员间接访问,可以被派生类直接访问。

公有继承(public)

公有继承的特点是基类的公有成员和保护成员作为派生类的成员时,它们都保持原有的状态,而基类的私有成员仍然是私有的,不能被这个派生类的子类所访问。

(1) 基类成员对其对象的可见性:
公有成员可见,其他不可见。这里保护成员同于私有成员。

(2) 基类成员对派生类的可见性:
公有成员和保护成员可见,而私有成员不可见。这里保护成员同于公有成员。

(3) 基类成员对派生类对象的可见性:
公有成员可见,其他成员不可见。

在公有继承时,派生类的对象可以访问基类中的公有成员;派生类的成员函数可以访问基类中的公有成员和保护成员。

Resume

胡原

Tel:15927550324 Email:skyway404@gmail.com


教育背景


1
2
2009.092013.06 华中科技大学-软件学院 软件工程 前15%
2013.092016.06 华中科技大学-武汉光电国家实验室 软件工程 前10%

项目经验


2013.03—2013.05 珠海佳和实习:C++、DirectUI 企业通信软件——佳语1.x

  • 项目描述:企业通信软件佳语,有登录,单聊,群聊,文件传输,视频,语音,拨分机电话,通讯录同步等功能,用于企业内部交流和工作,分PC端和移动端。
  • 职责描述:同步模块负责人,负责PC端实现添加、删除、移动、修改联系人,新建、删除分组,设置权限,通讯录同步,数据恢复等功能。

Web响应式布局

基本内容

  • 安装 BrowserSync

    1
    2
    npm install browser-sync@2.7.1
    browser-sync start --server --port 4000 --files index.html --files css/main.css
  • 固定背景

    1
    2
    3
    background-attachment: fixed;
    background-size: cover;
    background-position: center;
  • 居中包围框

    1
    2
    width: 960px;
    margin: 0 auto;

MySQL安装配置、备份恢复

[TOC]

安装配置

1. The service mysql56 was not found in the windows services
I got an error msg

1
……the service mysql56 was not found in the windows services……

when I restart mysql.

Solution

  1. Right click on MySQL Notifier -> Actions -> Manage Monitored Items
  2. Highlight the MySQL56 entry and click the delete button
  3. Click the add button -> windows service
  4. Scroll down and look for MySQL56
  5. Highlight it and click ok
    View details

First Blood

习惯了Markdown,感觉GitHub Pages更适合平时写写东西

安装问题

1
Permission denied (publickey)

安装git后使用git bash执行命令ssh -T git@github.com,提示enter passphrase for key,输入yes则终止,输入no则提示Permission denied (publickey).

然后使用GitHub for Windows,安装后在.ssh目录又生成两个文件,github_rsa和github_rsa.pub,在Add密钥的时候发现后缀与之前的不一样

打造移动版QQ表情

跟QQ手机版的表情类似,可以滑动翻页,总共100个表情。上图看看效果吧,这不是APP,你没看错,是Web。是不是感觉比基于jQuery的QQ表情插件看起来高大上些呢。不是说那个不好,主要是那只适用于PC端,在移动端显示效果很差也不好用,所以想模仿QQ的web页面中的表情输入。
QQ表情


一般Web版表情实现方式

查看过jQuery的QQ表情插件应该知道,每个表情有一个图片,通过CSS把每个表情排列好,点击每个表情的时触发对应的事件,将对应编号组成指定格式(如[em_11])输入到文本框,通过将[em_11]转换为html的img标签显示到页面中。

为什么密码明文传输

一个字——懒!

看了验证用户密码这件事,然后无聊就抓了简书的数据包,然后发现居然是明文的?

简书Web

然后觉得,一般电脑应该还好,不会随便链接别人的WiFi,但是手机就不一样了,在外面无论是公共的还是各种餐厅的WIFI,手机肯定经常回去连接,于是我就想试试手机客户端是否也是明文传输的。

Wireshark功能比较强大,可以选择网络,于是打开WiFi,让手机连上,Wireshark中设置捕获WIFi的网络的数据包,于是就开始抓手机端的数据包,但是Wireshark有个缺点是信息显示太不明显,小白我实在是找的辛苦。于是换了Fiddle,不用选择网络只需要在连接设置中勾选远程可连接,端口为8888,然后在手机端连接上的

WIFI中设置代理为对应的IP和PORT,然后就开始了手机端的抓包之旅。