小编Leo*_*ang的帖子

整数对象占用32字节内存空间?

我读到PyObject有用于垃圾收集的类型、值和引用计数。但下面显示每个整数对象占用 32 个字节,对于 64 位操作系统,似乎还有一个字段。那会是什么?

>>> hex(id(3))
'0x1595ae90130'
>>> hex(id(4))
'0x1595ae90150'
>>> hex(id(5))
'0x1595ae90170'  
Run Code Online (Sandbox Code Playgroud)

您会发现 ID 之间的间隔为 32 个字节。

python

1
推荐指数
1
解决办法
171
查看次数

读取 strcpy() 返回值上的字符串字符时出错

我尝试打印出strcpy() 的返回值,它给了我一个“访问冲突读取位置”异常。

char ind[15]; 
printf("%s\n", strcpy(ind, "source text"));
Run Code Online (Sandbox Code Playgroud)

或使用调试语句:

char* ins = "source text";
char* dst;
dst = strcpy(ind, ins);
printf("dst = %s", dst);
Run Code Online (Sandbox Code Playgroud)

Visual Studio 显示 ind = 0x00000024ec71f448“源文本”,而 dst = 0xffffffffec71f448<读取字符串字符时出错。> <无法读取内存> 。

dst不应该= ind吗?指向同一个地址?

Great answers, all! 如果没有 <string.h>,当我将鼠标悬停在 strcpy 上时,它默认为“int strcpy()”。包含<string.h>后,它显示“char *strcpy()”。

关于地址值,我的电脑运行的是 64 位 Windows 10。由于“int”在大多数 64 位平台上通常为 32 位,因此 dst 的上限为 32 位,并具有伪造的高 32 位。

一个问题是,为了使用 Visual Studio 进行构建,您必须在所有 #include .h 之上添加#define _CRT_SECURE_NO_WARNINGS以避免编译器错误。原因是VS建议使用errno_t strcpy_s(...)而不是strcpy()。但如果成功,strcpy_s() 将返回值。这使得我们的 dst …

c

0
推荐指数
1
解决办法
153
查看次数

标签 统计

c ×1

python ×1