小编Jak*_*ake的帖子

堆栈和堆地址

我在C中尝试简单的内存分配和C中的堆.

int x = 2;
int *y = malloc(sizeof(int));
Run Code Online (Sandbox Code Playgroud)

当我查看堆栈上的x地址和y中包含的堆地址时,我看到以下内容

x stack address : 0xbfe92bb4
heap address in y : 0x 9c4b008
Run Code Online (Sandbox Code Playgroud)

这些地址是否采用不同的格式(因为我在这两种地址中看不到相同的数字十六进制字符)?

c memory-management

6
推荐指数
2
解决办法
7106
查看次数

如何查找原生java函数调用的源代码

Android OS在android.os.Binder.java中有一个名为BinderProxy的类.该类具有以下函数声明:

public native boolean transact(int code, Parcel data, Parcel reply, int flags) throws RemoteException;
Run Code Online (Sandbox Code Playgroud)

我想知道调用此函数时执行的代码.

我该怎么做?

java android native

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

Android如何通过应用程序设置时区

Android提供了一个名为"SET_TIME_ZONE"的权限,其操作系统权限级别为"危险".有没有人知道给定具有此权限的应用程序,应用程序如何设置时区?

谢谢.

timezone android

6
推荐指数
3
解决办法
2万
查看次数

Android中的证书固定

我正在尝试学习如何在Android应用程序中进行证书固定.我在这里找到了教程.我想澄清一下,我怀疑我是基于我对这段代码的测试.

我使用的代码如下:

public class CertificatePinning {

  static SSLSocketFactory constructSSLSocketFactory(Context context) {

    SSLSocketFactory sslSocketFactory = null;

    try {
        AssetManager assetManager = context.getAssets();
        InputStream keyStoreInputStream = assetManager.open("myapp.store");
        KeyStore trustStore = KeyStore.getInstance("BKS");

        trustStore.load(keyStoreInputStream, "somepass".toCharArray());

        sslSocketFactory = new SSLSocketFactory(trustStore);
        sslSocketFactory.setHostnameVerifier(SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
    }
    catch(Exception e){

        Log.d("Exception", e.getLocalizedMessage());
    }

    return sslSocketFactory;
}

public static HttpClient getNewHttpClient(Context context) {

    DefaultHttpClient httpClient = null;

    try {

        SSLSocketFactory sslSocketFactory = constructSSLSocketFactory(context);

        HttpParams params = new BasicHttpParams();
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

        SchemeRegistry registry = new SchemeRegistry();
        registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), …
Run Code Online (Sandbox Code Playgroud)

ssl android pinning

6
推荐指数
0
解决办法
9743
查看次数

Android M 权限授予回调

我正在 Android M Dev Preview 上测试权限系统。我有一个关于回调函数的问题。Activity 类有一个新的 API:

public void onRequestPermissionsResult (int requestCode, 
               String[] permissions, int[] grantResults) { }
Run Code Online (Sandbox Code Playgroud)

我想问一下为什么将 permissions 和 grantResults 参数定义为数组?我知道使用 可以同时询问多个权限requestPermissions(),但是如果请求代码用于请求的权限集,那么仅拥有一个整数 grantResults (不确定权限参数)是否就足够了?

permissions android android-6.0-marshmallow

6
推荐指数
2
解决办法
1万
查看次数

Printf() - 打印字符限制

我试图找到printf()C标准中要打印的字符数的允许限制.我只在讨论论坛中找到答案,这表明INT_MAX.

例如,我检查了以下内容:

#include <stdio.h>

// INT_MAX  2147483647

int main()
{
    int x=3;

    int y = printf("%2147483647d \n\n", x); --> Confirms INT_MAX ?

    // If I change the above to 2147483648, y in set to -1
    printf("y = %d\n\n", y);

    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

我想问为什么printf()受限制INT_MAX?任何人都可以指出C标准推理或源代码参考?

编辑

我找到的最接近的答案是fprintf().在此链接上,在页568上,提到了它(在未定义的行为下):

The number of characters or wide characters transmitted by a formatted output
function (or written to an array, or that would …
Run Code Online (Sandbox Code Playgroud)

c c++ printf

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

Cast 增加了目标类型所需的对齐方式

我正在 ARM 上编程,并有以下代码片段(C 语言):

struct data {
   int x;
   char y[640];
};
unsigned int offset = 819202;
char *buf; // buf is assigned an address elsewhere in the code
struct data * testdata = (struct data *)(buf + offset) 
Run Code Online (Sandbox Code Playgroud)

我收到以下编译错误:

错误:强制转换增加了目标类型所需的对齐方式 [-Werror=cast-align]

testdata指针需要指向包含类型数据数组的内存部分struct data。所以我需要一个指针,以便稍后我可以将索引应用于testdata. 偏移量是硬编码在程序中的。buf作为共享内存从另一个进程接收。

例如,稍后在代码中我有:

testdata[index].x = 100;
Run Code Online (Sandbox Code Playgroud)

我看过一些关于 SO 的例子,但我不确定处理这个问题的正确方法是什么。有什么建议 ?

c arm

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

DNS响应答案和权威部分

我一直在关注Wireshark中的DNS响应数据包,并且无法理解答案和权威部分的十六进制编码.

考虑DNS查询:mail.abcd.com

答案部分包含名称字段,其十六进制编码因:

 0xc00c
 0xc012
Run Code Online (Sandbox Code Playgroud)

它们都导致在该字段中填充整个名称.

权威部分还包含名称字段,但通常为:

 0xc010
Run Code Online (Sandbox Code Playgroud)

这导致abcd.com在该领域居住.

任何人都可以告诉填充这些字段的惯例是什么,因为它非常令人困惑.

谢谢

dns response wireshark web-traffic network-traffic

5
推荐指数
2
解决办法
4899
查看次数

linux中socket()函数实现的位置

在 Linux 中,要创建套接字,我们包含 sys/socket.h 头文件并使用 socket() 函数。头文件位于/usr/include/sys/socket.h。

extern int socket (int __domain, int __type, int __protocol) __THROW;
Run Code Online (Sandbox Code Playgroud)

谁能告诉我socket()函数实际实现的位置。

谢谢。

sockets linux

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

向图的所有边添加权重 - 在生成树和最短路径中进行更改

(a)设T是加权图G的最小生成树.通过向G的每个边添加k的权重来构造新的图G.做T的边形成G的最小生成树.证明语句或给出一个反例.

(b)设P = {s ,. ..,t}描述加权图G的顶点s和t之间的最短加权路径.通过向G的每个边添加k的权重来构造新的图G. P是否描述了G中从s到t的最短路径.声明或给出一个反例.

我的解决方案

a)T的边缘仍然形成G的最小生成树,因为所有边缘权重增加相同的量.

b)P仍描述G中从s到t的最短路径(同样的原因)

有人可以验证答案吗?

algorithm graph

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