<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[c99c89的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/c99c89</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; c99c89]]></copyright><item><title><![CDATA[Windows环境下VSCode+CMake搭建Qt开发环境]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/144033416</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/144033416</guid><author>c99c89</author><pubDate>Mon, 02 Dec 2024 18:57:50 +0800</pubDate><description><![CDATA[选择你QT的安装路径（如图所示为我安装QT的路径），就开始构建项目并运行，生成了一个。最后，执行VSCode主界面。在VSCode主界面按住。]]></description><category></category></item><item><title><![CDATA[将cha*类型字符串作为thread的参数如何保证安全]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/141646122</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/141646122</guid><author>c99c89</author><pubDate>Wed, 28 Aug 2024 17:45:16 +0800</pubDate><description><![CDATA[不可以，因为将 char* 转换为 string 类型时，发生了隐式类型转换，此时会自动调用 string(char *) 的构造函数生成一个 string 类型的临时对象。虽然解决了这个问题，但是 func 函数的形参 str 引用的并不是隐式类型转换下生成的临时对象，而是 main 线程将这个临时对象复制到子线程中(调用拷贝构造函数)的新对象。依然不安全，前面提到，发生隐式类型转换时，会自动调用 string(char*) 构造函数，但是调用时机是发生在 main 线程中还是发生在子线程中的呢？]]></description><category></category></item><item><title><![CDATA[gcc编译器报错：/usr/bin/ld: main.o: relocation R_X86_64_32 against `.rodata.str1.1‘ can not be used when m]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/124479687</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/124479687</guid><author>c99c89</author><pubDate>Thu, 28 Apr 2022 18:00:20 +0800</pubDate><description><![CDATA[今天编译源文件为main.c和str.c时的一个程序时，gcc编译器报了如下错误：
$ make
cc    -c -o main.o main.c
cc    -c -o str.o str.c
gcc main.o str.o -o main
/usr/bin/ld: main.o: relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
]]></description><category></category></item><item><title><![CDATA[const关键字的实验]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/124405221</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/124405221</guid><author>c99c89</author><pubDate>Mon, 25 Apr 2022 15:31:56 +0800</pubDate><description><![CDATA[今天做了一个实现，想看看const变量的值能不能被修改：
程序代码：
#include &lt;iostream&gt;

int main()
{
        int arr[10];
        int b = 10;

        arr[10] = 20;
        std::cout &lt;&lt; "b = " &lt;&lt; b &lt;&lt; std::endl;

        return 0;
}

然而编译正确，运行时程序崩溃，这是编译和运行结果：
➜  A]]></description><category></category></item><item><title><![CDATA[char类型越界导致的错误]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/123325712</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/123325712</guid><author>c99c89</author><pubDate>Mon, 07 Mar 2022 11:08:40 +0800</pubDate><description><![CDATA[今天写程序时遇到了有关char和unsighed char的诡异问题，实质是没有检查char类型的越界。
#include &lt;stdio.h&gt;
#include &lt;stdlib.h&gt;
#include &lt;string.h&gt;

#define BUFSIZE 1024
#define THRNUM 25

int main(void)
{
	char **arr;
	char buf[BUFSIZE] = {"abcdefghijklmnopqrstuvwxyz\n"};
]]></description><category></category></item><item><title><![CDATA[进程环境-]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/122468351</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/122468351</guid><author>c99c89</author><pubDate>Thu, 13 Jan 2022 10:28:40 +0800</pubDate><description><![CDATA[文件系统的第三部分
进程环境
讲单进程，因为每一个进程我们要搞清楚它里面到底是怎么样组成的，有什么状态，和系统的变量和资源相关的一些内容，为后面的多进程并发做铺垫
1. main函数

int main(int argc,char * argv[])

历史早期的main函数有第三个变量：环境变量，但现在已经成为一个分支了

int main(int argc,char * argv[],char * envp[])

2. 进程的终止(正常，异常)
正常终止：

从main函数返回:return 0
调用]]></description><category></category></item><item><title><![CDATA[以库的方式实现的双向循环链表]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/120691473</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/120691473</guid><author>c99c89</author><pubDate>Sun, 10 Oct 2021 20:17:20 +0800</pubDate><description><![CDATA[以库的方式实现的双向循环链表
main.c
#include &lt;stdio.h&gt;
#include "list.h"

//==================================================================================

#define NAMESIZE 32

//用户自定义的数据结构
typedef struct score_st
{
	int id;
	char name[NAMESIZE];
	int math;
	i]]></description><category></category></item><item><title><![CDATA[单链表合并]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/120688446</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/120688446</guid><author>c99c89</author><pubDate>Sun, 10 Oct 2021 16:48:23 +0800</pubDate><description><![CDATA[题目：设ha和hb分别是两个带附加头结点的非递减有序单链表的头指针。将两个表合并成一个非递增有序单链表。结果不能占用除两个链表外多余的存储空间。
我的思路：先合并成非递减有序，然后再翻转链表，
不知道有没有比这更好的办法，先写在这
代码：
main.c
#include"list.h"

int main(void)
{ 
     node * ha = list_init();
     node * hb = list_init();
     int arr1[]= {1,3,4,4,9,10};
]]></description><category></category></item><item><title><![CDATA[Unix文件系统]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/118882988</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/118882988</guid><author>c99c89</author><pubDate>Sun, 18 Jul 2021 21:01:36 +0800</pubDate><description><![CDATA[参考书籍:Unix环境高级编程,深入理解计算机系统
文件系统:
一. 目录和文件

获取文件属性
类ls的实现 如myls
ls -i
文件访问权限
umask
文件权限的更改/管理
粘住位
文件系统:FAT,UFS —涉及到深入理解计算机系统
硬链接, 符号链接(不要说软链接)
更改时间的操作utime
目录的创建和销毁
切换/更改当前工作路径
分析目录/读取目录内容

二. 系统数据文件和信息
三.进程环境

...]]></description><category></category></item><item><title><![CDATA[标准IO&文件IO]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/118786480</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/118786480</guid><author>c99c89</author><pubDate>Sat, 17 Jul 2021 15:06:40 +0800</pubDate><description><![CDATA[写程序首当其冲的是可读性,开始不要注重效率问题,待代码量足够了在考虑效率
系统

]]></description><category></category></item><item><title><![CDATA[字符串常量和字符串变量]]></title><link>https://blog.youkuaiyun.com/c99c89/article/details/117661157</link><guid>https://blog.youkuaiyun.com/c99c89/article/details/117661157</guid><author>c99c89</author><pubDate>Mon, 07 Jun 2021 15:12:10 +0800</pubDate><description><![CDATA[字符串常量和字符串变量所引发的错误
我以前一直认为char *和char []是一样的,但其实他们不一样.
看下面一段代码:
#include&lt;stdio.h&gt;
int main(void)
{
    char * ptr = "abc";
    ptr[0] = 'x';
    printf("%s\n",ptr);
    return 0;
}

另一段代码:
#include&lt;stdio.h&gt;
int main(void)
{
    char ptr[] = "abc]]></description><category></category></item></channel></rss>