- r - 以节省内存的方式增长 data.frame
- ruby-on-rails - phát hiện rò rỉ bộ nhớ Ruby/Ruby on Rails
- android - 无法解析导入android.support.v7.app
- UNIX 域套接字与共享内存(映射文件)
#include
#include
#include
extern char *environ[];
int main(int argc, char *argv[])
{
int index = 0;
char **env = environ;
printf("Environment variables:\n");
index = 0;
while (env[index])
{
printf("envp[%d]: %s\n", index, env[index]);
++index;
}
trả về 0;
}
Đầu ra:
Environment variables:
envp[0]: GH#þ
我想打印所有的环境,但是不行。
我将 extern char *environ[]
更改为 extern char **environ
并且它可以打印所有环境。
更改代码输出后:
Environment variables:
envp[0]: XDG_SESSION_ID=8
envp[1]: TERM=xterm
envp[2]: SHELL=/bin/bash
envp[3]: SSH_CLIENT=192.168.1.224 1085 22
envp[4]: SSH_TTY=/dev/pts/0
...
câu trả lời hay nhất
如果不考虑内存中的实际内容及其组织方式,我发现这些东西是不可能理解的。
内存中的某处是一堆包含环境字符串的数据 block ——“foo=bar”、“hello=world”等等。为了便于讨论,我们假设“foo=bar”位于地址 100,而“hello=world”位于地址 200。
内存中的其他地方是另一个数据 block ,列出了这些数据 block 的地址(通常后跟一个零,所以如果我们事先不知道大小,我们知道列表实际结束的位置}。所以这个 block 包含数据
{100,200,0}
如果我将这个数据定义为 char *env[]
那将意味着内存中有一个叫做 môi trường
的地方,那个地方就是实际的数据 block {100,200,0}。也就是说,môi trường
中的数据本身就是数字 100,这是其中一个环境字符串的地址。 môi trường
之后的下一个位置将包含 200,然后是 0(好吧,我简化了一点)。
如果我将数据 block {100,200,0} 定义为 char **
,这意味着内存中有一个名为 môi trường
的位置,其中包含数据 block {100,200,0}。 môi trường
中存储的数据KHÔNG“100”(字符串的地址)。它将是一个地址,指示数据 block {100,200,0} 的开始。
在 C 程序中,环境实际上是一个 char **
,Ngay lập tức environ
不是地址列表的开始的字符串,它是字符串地址列表的地址。要看到这一点,您可以错误地定义它,然后更正它,如原始代码的这个修改版本:
extern char *environ[];
int main(int argc, char *argv[])
{
int index = 0;
char **env = (char **)environ[0];
printf("Environment variables:\n");
index = 0;
while (env[index])
{
printf("envp[%d]: %s\n", index, env[index]);
++index;
}
trả về 0;
}
sử dụng char *environ[]
告诉编译器(错误地)名为 environ
的位置开始了一个指向字符串的指针列表,在内存中一个接一个地排列点往前。事实上,只有位于 environ
确切位置的数据才是相关的。我们可以将该数据视为 environ[0]
,并将其转换为真正的数据类型,即 char **
。
由于 C 不允许数组被传递给一个函数。函数的所有参数都是一个数字——要么是整数或 float 之类的原始值,要么是某物的地址。如果您尝试传递一个数组(即一个数据 block ),则会传递该 block 的起始地址。这意味着在大多数代码中,您实际上可以使用 char **
Và char *[]
就好像它们是同一件事一样。当数据以某种方式在内存中排列时,您会遇到问题 - 就像在这个问题中一样 - 除非程序员使用正确的类型声明告诉它,否则编译器无法计算出这种方式。
关于c - extern char **environ 和 extern char *environ[] 有什么区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46830654/
我想在 32 位 Windows 上获取路径 system32 路径,在 64 位 Windows 上获取路径 SysWOW64。 Environment.GetFolderPath(Environm
我可以在 environment.yml 中设置环境变量吗? conda 中的文件环境? conda 让我 save environment variables in environments通过 e
我一直在尝试大部分 Enviroment.SpecialFolder 枚举,但我认为没有任何方法可以通过枚举。使用 string.Substring() 方法给我带来了最大的收获。 我尝试只获取实际安
当我在 .ios 项目的 appDelegate 中使用 Environment.GetFolderPath(Environment.SpecialFolder.Personal) 时,我得到一个路径
我找到了 this project在做一些研究的同时。我注意到 Docker Compose 示例文件中的这一行: environment: &environment 所以我想知道它实际上意味着什么?
在 python/flask/gunicorn/heroku 堆栈上,我需要根据另一个 env 变量的内容设置一个环境变量。 作为背景,我在 heroku 上运行了一个 python/Flask 应用
我正在尝试使用 angularfire @angular/[email protected] 构建 Angular 15 。但我遇到了这个错误 ✔ Downloading configuration
我在我的一位客户的计算机上遇到了一个非常奇怪的行为,我找不到任何线索来解释为什么会这样:当应用程序调用 Environment.GetFolderPath(Environment.SpecialFol
我遇到了以下方法: Environment.getDataDirectory() : /data 和 getFilesDir() : /data/data/package/files 一种方法使用环境
我在 rails 中有一个迁移,它执行以下操作: class AddMissingIndexes :evid, :length => { :evid => 255 } end end 但是,在对
所以我对 MS Stack Development 世界相当陌生,面临着本地开发环境与服务器环境不同的问题(我认为它们是一样的,但我错了)。 我的设置是使用 Visual Studio 2012(II
我有一个只包含 exe 文件(没有源代码)的 hello 工具。 你好工具结构: bin helloBin.exe helloRoot.exe conanfile.py conanfile.py
我是 R 的新用户,我尝试了以下代码。它给出了一个错误。任何人都可以帮忙吗?代码是: library(ggplot2) data(diamonds) qplot(price, data=diamond
我正在使用以下方法获取 Windows 7 中“我的文档”文件夹的路径并遍历其目录: Dim diri As New DirectoryInfo(Environment.GetFolderPath(E
我试图通过更改其环境变量来修改 Linux 上 JetBrains Rider 中 .NET 项目的设置配置文件。但是,当我点击文件夹图标时,我无法点击添加、删除或修改任何环境变量。 我注意到在 Ri
这个问题已经有答案了: How to add package to conda environment without pip (5 个回答) 已关闭 1 年前。 我在没有连接到互联网的计算机上安装了
我开发了一个 Controller 来使用 JSON 响应 AJAX 请求: class PeopleController extends Controller { public function l
我有一个 asp.net mvc3 应用程序。现在我想将用户数据保存在 C:\Users{AppPoolUserAccount}\AppData\Roaming\MyProgramm... 在第一次调
#include #include #include extern char *environ[]; int main(int argc, char *argv[]) { int ind
我在将 json 文件导入 typescript 时遇到问题。我已经按照惯例配置了tsconfig.json,但是在environment.ts文件中还是不行,但是在environment.prod.
Tôi là một lập trình viên xuất sắc, rất giỏi!