深入C语言5——动态内存管理
今天我们继续来学习C语言,今天的内容呢是关于动态内存的,我们知道内存可以分为几个板块,栈区,堆区,静态区,我来用一张图片解释:
我们平时再main函数里定义的变量都是局部变量,那么当我们定义好了一个局部变量,内存就会在栈区当中为我们开辟一块空间,有且只有这一块空间,这也叫做静态内存。
换一个例子吧,当我们需要存一串不确定位数数字,你应该如何存储呢?我们肯定首先想到的是数组,但是这个数组要定义多大呢?由于并不知道会给多少数字,我们先定义100个?但是如果只给了10个数字呢?那我们定义20个?但是如果有200个数字呢?好像怎么存储都不合适,要么存不下,要么浪费掉,那我们该如何做呢?
接下来就引出我们今天的主题:动态内存开辟。
1.什么时动态内存开辟
定义:动态内存(Dynamic Memory),使用户能够指定虚拟操作系统启动的RAM容量,并将平台可用的系统内存最大化。
什么意思呢?简单来说就是我们可以向内存申请我们所需要的空间,我们需要一个,就申请一个,我们需要一百个,就申请一百个,把浪费缩减到最小,那么电脑为我们开辟内存的过程就是动态的,所以叫做动态内存开辟。
2.为什么存在动态内存分配
我们已经掌握的内存开辟方式有:
int val = 20;//在栈空间上开辟四个字节
char arr[10] = {0};//在栈空间上开辟10个字节的连续空间
但是上述的开辟空间的方式有两个特点: 1. 空间开辟大小是固定的。 2. 数组在申明的时候,必须指定数组的长度,它所需要的内存在编译时分配。 但是对于空间的需求,不仅仅是上述的情况。有时候我们需要的空间大小在程序运行的时候才能知道,那数组的编 译时开辟空间的方式就不能满足了。 这时候就只能试试动态存开辟了。
3.malloc
C语言提供的第一个动态内存开辟的函数是:malloc,我们来看MSDN里对于它的概念的解释。
malloc在为我们申请内存时一次只申请一个,不论你的类型是int或char,你让我申请什么类型的我就申请什么类型的,但是只有一个,我们来看它的用法:malloc函数的形参是一个size_t size,所代表的就是开辟内存的大小,malloc返回值是一个void*,我们讲过函数指针,知道返回值为void*代表可以返回任何类型的指针,所以当我们申请int型数据内存时返回的就是int*,char型的话返回的就是char*,那么我们来看一下malloc函数使用的实例:
#include <stdlib.h>
int* ret = (int*)malloc(sizeof(int));
如果开辟成功,则返回一个指向开辟好空间的指针。 如果开辟失败,则返回一个NULL指针,因此malloc的返回值一定要做检查。 返回值的类型是 void* ,所以malloc函数并不知道开辟空间的类型,具体在使用的时候使用者自己来决定。 如果参数 size 为0,malloc的行为是标准是未定义的,取决于编译器。
我们知道调用一个函数并且传参时在调用的函数里就会为其创建局部变量,但是当你的函数结束时其中的局部变量就会销毁,并不能返回到main函数中,但是当我们使用动态内存开辟一块空间,不论在main函数里还是在我们自己写的接口函数里它都不会销毁,因为我们再回看上面那幅图局部变量和函数的形参都是在栈区开辟的,而动态内存开辟是在堆区开辟的,它们并不在同一块内存空间,所以在调用函数生成栈帧时并不会影响到malloc开辟的空间,那这时候就会有人问了,如果函数结束后都不会销毁的话,那岂不是当我用一次动态内存都要吃点一点我的内存?是的,当我们使用了动态内存开辟后并没有对其进行销毁,它就会一直在那里,虽说只有几个字节但是这显然是不正确的,那该如何销毁动态内存开辟的内存呢?C语言提供了另一个函数:free,free函数专门用来释放动态内存开辟的空间,所以我们不难看出动态内存开辟函数和free函数是一起用的。
举几个实例:
#include <stdio.h>
int main()
{//代码1int num = 0;scanf("%d", &num);int arr[num] = {0};//代码2int* ptr = NULL;ptr = (int*)malloc(num*sizeof(int));if(NULL != ptr)//判断ptr指针是否为空{int i = 0;for(i=0; i<num; i++){*(ptr+i) = 0;}}free(ptr);//释放ptr所指向的动态内存ptr = NULL;//是否有必要?//答:有,因为当我们释放了ptr后它所指向的是一块随机内存//也叫做野指针,为了不引起其他的麻烦,我们选择把它指向NULLreturn 0;
}
int main()
{//int arr[10] = { 0 };int* p = (int*)malloc(40);if (p == NULL){return -1;}else{printf("申请成功");for (int i = 0; i < 10; i++){*(p + i) = i;}}free(p);p == NULL;ret
4.calloc
C语言提供的第二个动态内存开辟函数是:calloc,我们还是照旧来从MSDN看关于calloc的定义:
那么同样作为动态内存开辟函数,它和malloc有什么区别呢?malloc - 只负责在堆区申请空间,并返回起始地址,不初始化内存空间;calloc - 在堆区上申请空间,并且初始化为0,返回起始地址。我们来用一段代码尝试理解:
int main()
{int* p = (int*)calloc(10, sizeof(int));if (p == NULL){printf("%s", strerror(errno));return -1;}for (int i = 0; i < 10; i++){*(p + i) = i;}int* ptr = realloc(p, 20 * sizeof(int));if (ptr != NULL){p = ptr;}else{return -1;}for (int i = 10; i < 20; i++){*(p + i) = i;}for (int i = 0; i < 20; i++){printf("%d ", *(p + i));}free(p);p = NULL;return 0;
}
其实我们可以去拿它和数组一起比较,不同的是数组是只能是局部变量或者全局变量,分别在栈区和静态区开辟,而calloc则是在堆区开辟。
5.realloc
C语言为我们提供的第三个动态内存开辟函数就是realloc,realloc和前两个不同的是,前面两个是开辟一块没有被使用的空间为你使用,而realloc可以在原有空间上进行增容,如果原空间就是0,那么realloc的功能也可以等同于malloc。
ptr 是要调整的内存地址 size调整之后新大小返回值为调整之后的内存起始位置。这个函数调整原内存空间大小的基础上,还会将原来内存中的数据移动到新的空间。
realloc函数的出现让动态内存管理更加灵活。 有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的时候内存, 我们一定会对内存的大小做灵活的调整。那 realloc 函数就可以做到对动态开辟内存大小的调整。
realloc在调整内存空间的是存在两种情况:
情况1:原有空间之后有足够大的空间。
情况2:原有空间之后没有足够大的空间
当是情况1的时候,要扩展内存就直接原有内存之后直接追加空间,原来空间的数据不发生变化。 当是情况2的时候,原有空间之后没有足够多的空间时,扩展的方法是:在堆空间上另找一个合适大小的连续空间来 使用。这样函数返回的是一个新的内存地址。 由于上述的两种情况,realloc函数的使用就要注意一些。
#include <stdio.h>
int main()
{int *ptr = malloc(100);if(ptr != NULL){//业务处理}else{exit(EXIT_FAILURE); }//扩展容量//代码1ptr = realloc(ptr, 1000);//这样可以吗?(如果申请失败会如何?)//代码2int*p = NULL;p = realloc(ptr, 1000);if(p != NULL){ptr = p;}//业务处理free(ptr);return 0;
}
学了这两个函数后,我们来看一些题目加深对动态内存开辟函数的理解:
int main()
{int* p = malloc(200);//只能访问50个字节if (p == NULL){return -1;}for (int i = 0; i < 80; i++)//越界访问{*(p + i) = i;}for (int i = 0; i < 80; i++){printf("%d", *(p + i));}free(p);p = NULL;return 0;
}
int main()
{int* p = (int*)malloc(20);if (p == NULL){return -1;}*p = 0;//直接这样写是有风险的,p可能为空指针return 0;
}
我们知道当使用了动态内存开辟了一块空间后,不使用了要用free进行销毁,那么如果我没有销毁呢?会产生什么后果?
//动态内存开辟忘记释放
//在堆区上申请的空间,有两种回收方式
//1.free
//2.当程序退出时,申请的空间也会自动回收
int main()
{int* p = (int*)malloc(40);return 0;
}
我们来做几道经典的笔试题,来看看它们对于动态内存函数的考察都是什么吧。
题目一:
void GetMemory(char *p)
{p = (char *)malloc(100);
}
void Test(void)
{char *str = NULL;GetMemory(str);strcpy(str, "hello world");printf(str);
}
//直接调用Test会产生什么结果?
直接调用Test后会产生野指针的问题,因为当你的GetMemory函数在其内部为你开辟了一块空间时并没有返回p指针,我们知道调用函数传参时在函数内部创建了一个实参的临时拷贝,它只完成功能,对main函数里的实参没有影响,所以str里并不是malloc刚刚为你开辟的空间,那我们要如何更改呢?
//第一种改法
void GetMemory(char** p)
{*p = (char*)malloc(100);
}
int main()
{char* str = NULL;GetMemory(&str);strcpy(str, "helloworld");printf(str);//程序挂掉//1.str传给p的时候,是值传递,p是str的临时临时拷贝,所以当malloc开辟的空间起始地址放在p中的时候,不会影响str,str依然为NULL//2.当str是NULL时,strcpy想把helloworld拷贝到str指向的空间时,程序就崩溃了,因为NULL指针指向的空间是不能直接访问的。return 0;
}
//第二种改法
char* GetMemory(char* p)
{*p = (char*)malloc(100);return p;
}
int main()
{char* str = NULL;str = GetMemory(str);strcpy(str, "helloworld");printf(str);return 0;
}
题目二:
char *GetMemory(void)
{char p[] = "hello world";return p;
}
void Test(void)
{char *str = NULL;str = GetMemory();printf(str);
}
这道题的问题主要是我们知道调用函数时会在内存上为其开辟栈帧,函数内部创建的变量也是一样,当出了这个函数后栈帧也会被销毁,所以malloc的空间并不存在,出了栈区会被销毁,所以Getmemory函数已经被销毁,p创建的数组也被销毁,返回的p只是随机值,如果想解决这个问题,记得调用二级指针。
void GetMemory(char **p, int num)
{*p = (char *)malloc(num);
}
void Test(void)
{char *str = NULL;GetMemory(&str, 100);strcpy(str, "hello");printf(str);
}
这里的代码并没有free调开辟的内存,所以会产生内存泄漏。
void Test(void)
{char *str = (char *) malloc(100);strcpy(str, "hello");free(str);if(str != NULL){strcpy(str, "world");printf(str);}
}
已经free掉str开辟的内存了还要对其进行字符串拷贝和打印,典型的越界访问。
6.C/C++程序的内存开辟
C/C++程序内存分配的几个区域:
1. 栈区(stack):在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些 存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 栈区主要存放运行函数而分配的局部变量、函数参数、返回数据、返回地址等。 2. 堆区(heap):一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。分配方式类似于链表。 3. 数据段(静态区)(static)存放全局变量、静态数据。程序结束后由系统释放。 4. 代码段:存放函数体(类成员函数和全局函数)的二进制代码。
有了这幅图,我们就可以更好的理解在《C语言初识》中讲的static关键字修饰局部变量的例子了。 实际上普通的局部变量是在栈区分配空间的,栈区的特点是在上面创建的变量出了作用域就销毁。 但是被static修饰的变量存放在数据段(静态区),数据段的特点是在上面创建的变量,直到程序结束才销毁所以生命周期变长。
7.柔性数组
接下来又要介绍一个全新的概念,可能大家从来没听过柔性数组的概念,但是它确实是存在的。 C99 中,结构中的最后一个元素允许是未知大小的数组,这就叫做『柔性数组』成员。
typedef struct st_type
{int i;int a[0];//柔性数组成员
}type_a;
柔性数组的特点:结构中的柔性数组成员前面必须至少一个其他成员。 sizeof返回的这种结构大小不包括柔性数组的内存。 包含柔性数组成员的结构用malloc ()函数进行内存的动态分配,并且分配的内存应该大于结构的大小,以适应柔性数组的预期大小。
//code1
typedef struct st_type
{int i;int a[0];//柔性数组成员
}type_a;
printf("%d\n", sizeof(type_a));//输出的是4
柔性数组的使用:
struct st_type
{int i;int a[];//柔性数组成员
};
//struct ts_type2
//{
// int i;
// int a[0];//柔性数组成员
//};
int main()
{//printf("%d", sizeof(struct st_tpye));//包含柔性数组成员的结构体的使用,要配合动态内存分配函数//struct st_tpye st;//error 4bytestruct st_type* ps = (struct st_type*)malloc(sizeof(struct st_type) + 10 * sizeof(int));if (ps == NULL){printf("%s\n", strerror(errno));return -1;}ps->i = 100;for (int i = 0; i < 10; i++){ps->a[i] = i;}for (int i = 0; i < 10; i++){printf("%d ", ps->a[i]);}//空间不够,希望调整成20个struct st_type* ptr = (struct st_type*)realloc(ps, sizeof(struct st_type) + 20 * sizeof(int));if (ptr == NULL){printf("扩展空间失败");return -1;}else{ps = ptr;}free(ps);ps = NULL;return 0;
}
struct st_type
{int i;int a[];//柔性数组成员
};
//struct ts_type2
//{
// int i;
// int a[0];//柔性数组成员
//};
int main()
{struct st_type* ps = (struct st_type*)malloc(sizeof(struct st_type));ps->i = 100;ps->a = (int*)malloc(10 * sizeof(int));for (int i = 0; i < 10; i++){ps->a[i] = i;}for (int i = 0; i < 10; i++){printf("%d ", ps->a[i]);}//扩容int* ptr = realloc(ps->a, sizeof(int) * 20);if (ptr == NULL){printf("扩容失败");return;}else{ps->a = ptr;}free(ps->a);ps->a = NULL;free(ps);ps = NULL;return 0;
}
柔性数组的优势:
//代码1
int i = 0;
type_a *p = (type_a*)malloc(sizeof(type_a)+100*sizeof(int));
//业务处理
p->i = 100;
for(i=0; i<100; i++)
{p->a[i] = i;
}
free(p);
//上述的 type_a 结构也可以设计为:
//代码2
typedef struct st_type
{int i;int *p_a;
}type_a;
type_a *p = malloc(sizeof(type_a));
p->i = 100;
p->p_a = (int *)malloc(p->i*sizeof(int));
//业务处理
for(i=0; i<100; i++)
{p->p_a[i] = i;
}
//释放空间
free(p->p_a);
p->p_a = NULL;
free(p);
p = NULL;
上述代码1和代码2可以完成同样的功能,但是方法1的实现有两个好处: 第一个好处是:方便内存释放 如果我们的代码是在一个给别人用的函数中,你在里面做了二次内存分配,并把整个结构体返回给用户。用户调用free可以释放结构体,但是用户并不知道这个结构体内的成员也需要free,所以你不能指望用户来发 现这个事。所以,如果我们把结构体的内存以及其成员要的内存一次性分配好了,并返回给用户一个结构体指针,用户做一次free就可以把所有的内存也给释放掉。
第二个好处是:这样有利于访问速度. 连续的内存有益于提高访问速度,也有益于减少内存碎片。(其实,我个人觉得也没多高了,反正你跑不了 要用做偏移量的加法来寻址)
好了,关于动态内存开辟我们就讲到这里,下次再见。
如若内容造成侵权/违法违规/事实不符,请联系编程学习网邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
相关文章
- HTML5-离线缓存(Application Cache)
1 什么是离线缓存? HTML5 引入离线缓存(Application Cache),这意味着 web 应用可进行缓存,并可在没有因特网连接时进行访问。 2 优势 离线浏览 - 用户可在应用离线时使用它们。 速度 - 已缓存资源加载得更快。 减少服…...
2024/4/27 19:55:24 - 规划所学,梳理思路,分支清楚,按需进行
嵌入式固件工作5个月心得体会 待做的3件事: 1)现在从事SSD行业的嵌入式固件工作接近5个月,暴漏出一些本身的问题点,特写此文,记录心得。后面不断补充。 2)整理所有的博客内容 3)将在学校学到的…...
2024/4/27 13:27:23 - 怀旧之偶尔做道题(8): 2002年研数一(2)
2002年研究生考试数学一的几道题...
2024/5/8 10:28:14 - Jedis事务操作用例
public class TransactionDemo{public static void main(String[] args){Jedis jedis new Jedis();String userId “testId”;String key keyFor(userId);jedis.setnx(key,String.valueOf(5));System.out.println(doubleAccount(jedis,userId));}public static i…...
2024/5/1 12:22:23 - JavaScript中常用的数组API
文章目录前言一、数组转字符串1. String()函数定义:应用场景:2. arr.join()函数定义:应用场景:二、数组的拼接和选取1. 选取函数slice()定义:选取简写:三、修改数组——splice函数1. 删除操作定义:2.插入操…...
2024/4/27 17:43:27 - 21天好习惯第12期
练习了if函数和pow函数的使用。 锻炼了如使用字符赋值,同时练习了对程序改错。...
2024/4/27 19:58:27 - 机房一键重开
mklink "C:\Users\Administrator\Desktop\QQMusic" "E:\Program Files (x86)\Tencent\QQMusic\QQMusic.exe" taskkill /f /t /im DeploymentAgent.exe del "C:\Program Files (x86)\Lenovo\联想智能云教室客户端\DeploymentAgent.exe" taskkill …...
2024/4/27 20:11:09 - php+elasticsearch+多字段搜索操作懒人版
首先单例模式封装es连接 private static $EsClient false;//私有的构造方法private function __construct(){}//3.私有的克隆方法private function __clone(){}//公有的静态方法public static function getIntance(){if (self::$EsClient false) {self::$EsClient ClientBu…...
2024/4/27 14:58:54 - 贝叶斯公式
贝叶斯公式 贝叶斯公式 设 A⊂SA \subset SA⊂SB1,B2,...,BnB_1,B_2,...,B_nB1,B2,...,Bn为样本空间S的一个划分。P(Bi)>0P(B_i)>0P(Bi)>0 则 P(Bi∣A)P(BiA)P(A)P(Bi)P(A∣Bi)∑j1nP(Bj)p(A∣Bj)\displaystyle P(B_i|A) \displaystyle \frac{P(B_iA)}{P(A…...
2024/4/27 20:00:32 - mysql中的sql在添加的操作中,id或者是某些字段,需要它添加自带的默认值,或者我们并不想对id或者某个字段赋值
可以将省略的字符写成default 或者写成null 如果解了各位的燃眉之急,求支持一下吧,多少也不嫌多...
2024/4/27 20:19:10 - “21天好习惯” 第一期-12
LINQ查询几种方式 LINQ的查询由3基本部分组成:获取数据源,创建查询,执行查询。 1、form子句 创建一个LINQ表达式必须要以from子句开头。 1.1 单个form子句 string[] values { "中国", "巴黎", "美国", &…...
2024/5/5 23:48:30 - redis 简单动态字符串
总结 摘抄...
2024/4/28 13:16:52 - 基尔霍夫定律
基尔霍夫第一定律 基尔霍夫第一定律又称为基尔霍夫电流定律(KCL),其描述如下: 假设进入某节点的电流为正值,离开该节点的电流为负值,则所有涉及该节点的电流的代数和等于零。基尔霍夫第二定律 基尔霍夫第二定律又称为基尔霍夫电压…...
2024/4/27 23:51:18 - 带权并查集
一 基础的并查集 对于基础的并查集而言,只存在着两种操作,一种是寻找祖先一种是进行合并 int find(int x) {if(xpre[x]) return x;else return pre[x]find(pre[x]); } void join(int x,int y) {pre[find(x)]find(y); }二 带权并查集 对于带权并查集而言,它可以在我们的基础并…...
2024/4/28 1:30:08 - 修改Anaconda中的Jupyter Notebook默认工作路径的三种方式
总结:修改Anaconda中的Jupyter Notebook默认工作路径的三种方式 方式1. 打开Windows的cmd,在cmd中输入jupyter notebook --generate-config如下图: 可以看到路径为D:\Users……找到此路径修改jupyter_notebook_config.py文件 打开此文…...
2024/4/28 16:08:15 - 串的存储表示和实现
◆ 定长顺序存储表示:将串定义成字符数组,利用串名可以直接访问 串值。用这种表示方式,串的存储空间在编译时确定,其大小不能改变。 ◆ 堆分配存储方式:仍然用一组地址连续的存储单元来依次存储串中的字 符序列&#x…...
2024/4/28 22:38:15 - 观察者设计模式
观察者设计模式简介 现实生活中,每个人都是一个观察者,同时也是一个被观察者,"你站在桥上看风景,看风景的人在楼上看你"形容的就是这样的一个场景。 观察者设计模式,定义了一种一对多的关联关系。一个对象 A 与多个对象…...
2024/4/29 2:01:17 - python基础一
Python源文件通常用.py扩展名,当原文件被解释器加载或者显式地进行字节码编译的时候会被编译成字节码。由于调用解释器的方式不同,源文件会被编译成带有.pyc或.pyo扩展名的文件。 一.如何运行Python 1.交互式的启动解释器,每次输入一行Pyth…...
2024/4/28 8:51:51 - 关于搭配nginx,后台服务器使用request.getServerName()获取服务名的正确配置
问题来源 为了解决CSRF跨站请求伪造,防止接口被恶意攻击 解决办法 验证HTTP请求的Referer是不是本服务器链接过来的 客户端或者浏览器在发送请求的时候 都会在请求头存在一个来源指向 Referer 就是当前服务的来源指向 如果是地址栏是 这样的 http://127.168.1.2:…...
2024/4/28 3:58:29 - CSS学习笔记7—盒子模型
盒子模型(CSS重点) 学习目标 理解: 能说出盒子模型有那四部分组成能说出内边距的作用以及对盒子的影响能说出padding设置不同数值个数分别代表的意思能说出块级盒子居中对齐需要的2个条件能说出外边距合并的解决方法 应用: 能利…...
2024/4/28 0:10:51
最新文章
- ADC STM32
/// STM32ADC模拟/数字转换详解 FOC控制库MCSDK5.4.4梳理(2)——电流采样 ///...
2024/5/8 12:53:32 - 梯度消失和梯度爆炸的一些处理方法
在这里是记录一下梯度消失或梯度爆炸的一些处理技巧。全当学习总结了如有错误还请留言,在此感激不尽。 权重和梯度的更新公式如下: w w − η ⋅ ∇ w w w - \eta \cdot \nabla w ww−η⋅∇w 个人通俗的理解梯度消失就是网络模型在反向求导的时候出…...
2024/5/7 10:36:02 - 2024免费Mac苹果解压压缩包软件BetterZip5
在2024年,对于Mac电脑用户来说,如果你想要无需解压就能快速查看压缩文档的内容,BetterZip是一个极佳的选择。这款软件不仅支持多种格式的压缩和解压,如zip、rar、7z、tar等,还具备丰富的功能和设置,包括预览…...
2024/5/7 2:47:11 - YOLOv9架构图分享
YOLOv9是YOLO (You Only Look Once)系列实时目标检测系统的最新迭代。它建立在以前的版本之上,结合了深度学习技术和架构设计的进步,以在目标检测任务中实现卓越的性能。通过将可编程梯度信息(PGI)概念与广义ELAN (GELAN)架构相结合,YOLOv9在…...
2024/5/6 12:36:11 - 【外汇早评】美通胀数据走低,美元调整
原标题:【外汇早评】美通胀数据走低,美元调整昨日美国方面公布了新一期的核心PCE物价指数数据,同比增长1.6%,低于前值和预期值的1.7%,距离美联储的通胀目标2%继续走低,通胀压力较低,且此前美国一季度GDP初值中的消费部分下滑明显,因此市场对美联储后续更可能降息的政策…...
2024/5/8 6:01:22 - 【原油贵金属周评】原油多头拥挤,价格调整
原标题:【原油贵金属周评】原油多头拥挤,价格调整本周国际劳动节,我们喜迎四天假期,但是整个金融市场确实流动性充沛,大事频发,各个商品波动剧烈。美国方面,在本周四凌晨公布5月份的利率决议和新闻发布会,维持联邦基金利率在2.25%-2.50%不变,符合市场预期。同时美联储…...
2024/5/7 9:45:25 - 【外汇周评】靓丽非农不及疲软通胀影响
原标题:【外汇周评】靓丽非农不及疲软通胀影响在刚结束的周五,美国方面公布了新一期的非农就业数据,大幅好于前值和预期,新增就业重新回到20万以上。具体数据: 美国4月非农就业人口变动 26.3万人,预期 19万人,前值 19.6万人。 美国4月失业率 3.6%,预期 3.8%,前值 3…...
2024/5/4 23:54:56 - 【原油贵金属早评】库存继续增加,油价收跌
原标题:【原油贵金属早评】库存继续增加,油价收跌周三清晨公布美国当周API原油库存数据,上周原油库存增加281万桶至4.692亿桶,增幅超过预期的74.4万桶。且有消息人士称,沙特阿美据悉将于6月向亚洲炼油厂额外出售更多原油,印度炼油商预计将每日获得至多20万桶的额外原油供…...
2024/5/7 14:25:14 - 【外汇早评】日本央行会议纪要不改日元强势
原标题:【外汇早评】日本央行会议纪要不改日元强势近两日日元大幅走强与近期市场风险情绪上升,避险资金回流日元有关,也与前一段时间的美日贸易谈判给日本缓冲期,日本方面对汇率问题也避免继续贬值有关。虽然今日早间日本央行公布的利率会议纪要仍然是支持宽松政策,但这符…...
2024/5/4 23:54:56 - 【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响
原标题:【原油贵金属早评】欧佩克稳定市场,填补伊朗问题的影响近日伊朗局势升温,导致市场担忧影响原油供给,油价试图反弹。此时OPEC表态稳定市场。据消息人士透露,沙特6月石油出口料将低于700万桶/日,沙特已经收到石油消费国提出的6月份扩大出口的“适度要求”,沙特将满…...
2024/5/4 23:55:05 - 【外汇早评】美欲与伊朗重谈协议
原标题:【外汇早评】美欲与伊朗重谈协议美国对伊朗的制裁遭到伊朗的抗议,昨日伊朗方面提出将部分退出伊核协议。而此行为又遭到欧洲方面对伊朗的谴责和警告,伊朗外长昨日回应称,欧洲国家履行它们的义务,伊核协议就能保证存续。据传闻伊朗的导弹已经对准了以色列和美国的航…...
2024/5/4 23:54:56 - 【原油贵金属早评】波动率飙升,市场情绪动荡
原标题:【原油贵金属早评】波动率飙升,市场情绪动荡因中美贸易谈判不安情绪影响,金融市场各资产品种出现明显的波动。随着美国与中方开启第十一轮谈判之际,美国按照既定计划向中国2000亿商品征收25%的关税,市场情绪有所平复,已经开始接受这一事实。虽然波动率-恐慌指数VI…...
2024/5/7 11:36:39 - 【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试
原标题:【原油贵金属周评】伊朗局势升温,黄金多头跃跃欲试美国和伊朗的局势继续升温,市场风险情绪上升,避险黄金有向上突破阻力的迹象。原油方面稍显平稳,近期美国和OPEC加大供给及市场需求回落的影响,伊朗局势并未推升油价走强。近期中美贸易谈判摩擦再度升级,美国对中…...
2024/5/4 23:54:56 - 【原油贵金属早评】市场情绪继续恶化,黄金上破
原标题:【原油贵金属早评】市场情绪继续恶化,黄金上破周初中国针对于美国加征关税的进行的反制措施引发市场情绪的大幅波动,人民币汇率出现大幅的贬值动能,金融市场受到非常明显的冲击。尤其是波动率起来之后,对于股市的表现尤其不安。隔夜美国股市出现明显的下行走势,这…...
2024/5/6 1:40:42 - 【外汇早评】美伊僵持,风险情绪继续升温
原标题:【外汇早评】美伊僵持,风险情绪继续升温昨日沙特两艘油轮再次发生爆炸事件,导致波斯湾局势进一步恶化,市场担忧美伊可能会出现摩擦生火,避险品种获得支撑,黄金和日元大幅走强。美指受中美贸易问题影响而在低位震荡。继5月12日,四艘商船在阿联酋领海附近的阿曼湾、…...
2024/5/4 23:54:56 - 【原油贵金属早评】贸易冲突导致需求低迷,油价弱势
原标题:【原油贵金属早评】贸易冲突导致需求低迷,油价弱势近日虽然伊朗局势升温,中东地区几起油船被袭击事件影响,但油价并未走高,而是出于调整结构中。由于市场预期局势失控的可能性较低,而中美贸易问题导致的全球经济衰退风险更大,需求会持续低迷,因此油价调整压力较…...
2024/5/4 23:55:17 - 氧生福地 玩美北湖(上)——为时光守候两千年
原标题:氧生福地 玩美北湖(上)——为时光守候两千年一次说走就走的旅行,只有一张高铁票的距离~ 所以,湖南郴州,我来了~ 从广州南站出发,一个半小时就到达郴州西站了。在动车上,同时改票的南风兄和我居然被分到了一个车厢,所以一路非常愉快地聊了过来。 挺好,最起…...
2024/5/7 9:26:26 - 氧生福地 玩美北湖(中)——永春梯田里的美与鲜
原标题:氧生福地 玩美北湖(中)——永春梯田里的美与鲜一觉醒来,因为大家太爱“美”照,在柳毅山庄去寻找龙女而错过了早餐时间。近十点,向导坏坏还是带着饥肠辘辘的我们去吃郴州最富有盛名的“鱼头粉”。说这是“十二分推荐”,到郴州必吃的美食之一。 哇塞!那个味美香甜…...
2024/5/4 23:54:56 - 氧生福地 玩美北湖(下)——奔跑吧骚年!
原标题:氧生福地 玩美北湖(下)——奔跑吧骚年!让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 让我们红尘做伴 活得潇潇洒洒 策马奔腾共享人世繁华 对酒当歌唱出心中喜悦 轰轰烈烈把握青春年华 啊……啊……啊 两…...
2024/5/4 23:55:06 - 扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!
原标题:扒开伪装医用面膜,翻六倍价格宰客,小姐姐注意了!扒开伪装医用面膜,翻六倍价格宰客!当行业里的某一品项火爆了,就会有很多商家蹭热度,装逼忽悠,最近火爆朋友圈的医用面膜,被沾上了污点,到底怎么回事呢? “比普通面膜安全、效果好!痘痘、痘印、敏感肌都能用…...
2024/5/5 8:13:33 - 「发现」铁皮石斛仙草之神奇功效用于医用面膜
原标题:「发现」铁皮石斛仙草之神奇功效用于医用面膜丽彦妆铁皮石斛医用面膜|石斛多糖无菌修护补水贴19大优势: 1、铁皮石斛:自唐宋以来,一直被列为皇室贡品,铁皮石斛生于海拔1600米的悬崖峭壁之上,繁殖力差,产量极低,所以古代仅供皇室、贵族享用 2、铁皮石斛自古民间…...
2024/5/4 23:55:16 - 丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者
原标题:丽彦妆\医用面膜\冷敷贴轻奢医学护肤引导者【公司简介】 广州华彬企业隶属香港华彬集团有限公司,专注美业21年,其旗下品牌: 「圣茵美」私密荷尔蒙抗衰,产后修复 「圣仪轩」私密荷尔蒙抗衰,产后修复 「花茵莳」私密荷尔蒙抗衰,产后修复 「丽彦妆」专注医学护…...
2024/5/4 23:54:58 - 广州械字号面膜生产厂家OEM/ODM4项须知!
原标题:广州械字号面膜生产厂家OEM/ODM4项须知!广州械字号面膜生产厂家OEM/ODM流程及注意事项解读: 械字号医用面膜,其实在我国并没有严格的定义,通常我们说的医美面膜指的应该是一种「医用敷料」,也就是说,医用面膜其实算作「医疗器械」的一种,又称「医用冷敷贴」。 …...
2024/5/6 21:42:42 - 械字号医用眼膜缓解用眼过度到底有无作用?
原标题:械字号医用眼膜缓解用眼过度到底有无作用?医用眼膜/械字号眼膜/医用冷敷眼贴 凝胶层为亲水高分子材料,含70%以上的水分。体表皮肤温度传导到本产品的凝胶层,热量被凝胶内水分子吸收,通过水分的蒸发带走大量的热量,可迅速地降低体表皮肤局部温度,减轻局部皮肤的灼…...
2024/5/4 23:54:56 - 配置失败还原请勿关闭计算机,电脑开机屏幕上面显示,配置失败还原更改 请勿关闭计算机 开不了机 这个问题怎么办...
解析如下:1、长按电脑电源键直至关机,然后再按一次电源健重启电脑,按F8健进入安全模式2、安全模式下进入Windows系统桌面后,按住“winR”打开运行窗口,输入“services.msc”打开服务设置3、在服务界面,选中…...
2022/11/19 21:17:18 - 错误使用 reshape要执行 RESHAPE,请勿更改元素数目。
%读入6幅图像(每一幅图像的大小是564*564) f1 imread(WashingtonDC_Band1_564.tif); subplot(3,2,1),imshow(f1); f2 imread(WashingtonDC_Band2_564.tif); subplot(3,2,2),imshow(f2); f3 imread(WashingtonDC_Band3_564.tif); subplot(3,2,3),imsho…...
2022/11/19 21:17:16 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机...
win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”问题的解决方法在win7系统关机时如果有升级系统的或者其他需要会直接进入一个 等待界面,在等待界面中我们需要等待操作结束才能关机,虽然这比较麻烦,但是对系统进行配置和升级…...
2022/11/19 21:17:15 - 台式电脑显示配置100%请勿关闭计算机,“准备配置windows 请勿关闭计算机”的解决方法...
有不少用户在重装Win7系统或更新系统后会遇到“准备配置windows,请勿关闭计算机”的提示,要过很久才能进入系统,有的用户甚至几个小时也无法进入,下面就教大家这个问题的解决方法。第一种方法:我们首先在左下角的“开始…...
2022/11/19 21:17:14 - win7 正在配置 请勿关闭计算机,怎么办Win7开机显示正在配置Windows Update请勿关机...
置信有很多用户都跟小编一样遇到过这样的问题,电脑时发现开机屏幕显现“正在配置Windows Update,请勿关机”(如下图所示),而且还需求等大约5分钟才干进入系统。这是怎样回事呢?一切都是正常操作的,为什么开时机呈现“正…...
2022/11/19 21:17:13 - 准备配置windows 请勿关闭计算机 蓝屏,Win7开机总是出现提示“配置Windows请勿关机”...
Win7系统开机启动时总是出现“配置Windows请勿关机”的提示,没过几秒后电脑自动重启,每次开机都这样无法进入系统,此时碰到这种现象的用户就可以使用以下5种方法解决问题。方法一:开机按下F8,在出现的Windows高级启动选…...
2022/11/19 21:17:12 - 准备windows请勿关闭计算机要多久,windows10系统提示正在准备windows请勿关闭计算机怎么办...
有不少windows10系统用户反映说碰到这样一个情况,就是电脑提示正在准备windows请勿关闭计算机,碰到这样的问题该怎么解决呢,现在小编就给大家分享一下windows10系统提示正在准备windows请勿关闭计算机的具体第一种方法:1、2、依次…...
2022/11/19 21:17:11 - 配置 已完成 请勿关闭计算机,win7系统关机提示“配置Windows Update已完成30%请勿关闭计算机”的解决方法...
今天和大家分享一下win7系统重装了Win7旗舰版系统后,每次关机的时候桌面上都会显示一个“配置Windows Update的界面,提示请勿关闭计算机”,每次停留好几分钟才能正常关机,导致什么情况引起的呢?出现配置Windows Update…...
2022/11/19 21:17:10 - 电脑桌面一直是清理请关闭计算机,windows7一直卡在清理 请勿关闭计算机-win7清理请勿关机,win7配置更新35%不动...
只能是等着,别无他法。说是卡着如果你看硬盘灯应该在读写。如果从 Win 10 无法正常回滚,只能是考虑备份数据后重装系统了。解决来方案一:管理员运行cmd:net stop WuAuServcd %windir%ren SoftwareDistribution SDoldnet start WuA…...
2022/11/19 21:17:09 - 计算机配置更新不起,电脑提示“配置Windows Update请勿关闭计算机”怎么办?
原标题:电脑提示“配置Windows Update请勿关闭计算机”怎么办?win7系统中在开机与关闭的时候总是显示“配置windows update请勿关闭计算机”相信有不少朋友都曾遇到过一次两次还能忍但经常遇到就叫人感到心烦了遇到这种问题怎么办呢?一般的方…...
2022/11/19 21:17:08 - 计算机正在配置无法关机,关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机...
关机提示 windows7 正在配置windows 请勿关闭计算机 ,然后等了一晚上也没有关掉。现在电脑无法正常关机以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!关机提示 windows7 正在配…...
2022/11/19 21:17:05 - 钉钉提示请勿通过开发者调试模式_钉钉请勿通过开发者调试模式是真的吗好不好用...
钉钉请勿通过开发者调试模式是真的吗好不好用 更新时间:2020-04-20 22:24:19 浏览次数:729次 区域: 南阳 > 卧龙 列举网提醒您:为保障您的权益,请不要提前支付任何费用! 虚拟位置外设器!!轨迹模拟&虚拟位置外设神器 专业用于:钉钉,外勤365,红圈通,企业微信和…...
2022/11/19 21:17:05 - 配置失败还原请勿关闭计算机怎么办,win7系统出现“配置windows update失败 还原更改 请勿关闭计算机”,长时间没反应,无法进入系统的解决方案...
前几天班里有位学生电脑(windows 7系统)出问题了,具体表现是开机时一直停留在“配置windows update失败 还原更改 请勿关闭计算机”这个界面,长时间没反应,无法进入系统。这个问题原来帮其他同学也解决过,网上搜了不少资料&#x…...
2022/11/19 21:17:04 - 一个电脑无法关闭计算机你应该怎么办,电脑显示“清理请勿关闭计算机”怎么办?...
本文为你提供了3个有效解决电脑显示“清理请勿关闭计算机”问题的方法,并在最后教给你1种保护系统安全的好方法,一起来看看!电脑出现“清理请勿关闭计算机”在Windows 7(SP1)和Windows Server 2008 R2 SP1中,添加了1个新功能在“磁…...
2022/11/19 21:17:03 - 请勿关闭计算机还原更改要多久,电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机怎么办...
许多用户在长期不使用电脑的时候,开启电脑发现电脑显示:配置windows更新失败,正在还原更改,请勿关闭计算机。。.这要怎么办呢?下面小编就带着大家一起看看吧!如果能够正常进入系统,建议您暂时移…...
2022/11/19 21:17:02 - 还原更改请勿关闭计算机 要多久,配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以...
配置windows update失败 还原更改 请勿关闭计算机,电脑开机后一直显示以以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!配置windows update失败 还原更改 请勿关闭计算机&#x…...
2022/11/19 21:17:01 - 电脑配置中请勿关闭计算机怎么办,准备配置windows请勿关闭计算机一直显示怎么办【图解】...
不知道大家有没有遇到过这样的一个问题,就是我们的win7系统在关机的时候,总是喜欢显示“准备配置windows,请勿关机”这样的一个页面,没有什么大碍,但是如果一直等着的话就要两个小时甚至更久都关不了机,非常…...
2022/11/19 21:17:00 - 正在准备配置请勿关闭计算机,正在准备配置windows请勿关闭计算机时间长了解决教程...
当电脑出现正在准备配置windows请勿关闭计算机时,一般是您正对windows进行升级,但是这个要是长时间没有反应,我们不能再傻等下去了。可能是电脑出了别的问题了,来看看教程的说法。正在准备配置windows请勿关闭计算机时间长了方法一…...
2022/11/19 21:16:59 - 配置失败还原请勿关闭计算机,配置Windows Update失败,还原更改请勿关闭计算机...
我们使用电脑的过程中有时会遇到这种情况,当我们打开电脑之后,发现一直停留在一个界面:“配置Windows Update失败,还原更改请勿关闭计算机”,等了许久还是无法进入系统。如果我们遇到此类问题应该如何解决呢࿰…...
2022/11/19 21:16:58 - 如何在iPhone上关闭“请勿打扰”
Apple’s “Do Not Disturb While Driving” is a potentially lifesaving iPhone feature, but it doesn’t always turn on automatically at the appropriate time. For example, you might be a passenger in a moving car, but your iPhone may think you’re the one dri…...
2022/11/19 21:16:57