小编asd*_*sds的帖子

malloc 应该指定指针大小还是内存大小?

我正在阅读Beej\xe2\x80\x99s 网络编程指南,在第 45 页上编写了以下代码;

\n\n
struct pollfd *pfds = malloc(sizeof *pfds * fd_size);\n
Run Code Online (Sandbox Code Playgroud)\n\n

我想知道是否应该

\n\n
struct pollfd *pfds = malloc(sizeof(struct pollfd) * fd_size);\n
Run Code Online (Sandbox Code Playgroud)\n\n

由于malloc返回一个指向指定大小的内存块的指针。

\n\n

由于 *pfds 是一个指针,它的大小将为 4 或 8 字节,所以我无法理解为什么在创建数组时要考虑它的大小。

\n

c linux networking

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

如何使用 ReactQuery 中的 useQuery 钩子来更新状态?

import React, {useState, useEffect, Component} from 'react';
import {Grid, Paper, TextField} from '@material-ui/core'
import DataManager from './../data_manager/data_manager'

const dataManager = new DataManager();

const Tile = (props)=>{
    // Initializing State Variables
    const [state, setState] = useState({
        data : {}
    })

    const { status, data, error, isFetching } = useQuery("data",async()=>{
        const res = await fetch("localhost:8000");
        return res.json()
    }

    if(status==="success"){
        setState({data})
    }else{
        return(<p>Doing</p>)
    }
}
Run Code Online (Sandbox Code Playgroud)

此代码会导致无限循环,渲染不断循环进行。

我认为这是因为setState导致useQuery再次执行再次设置状态等等。

任何帮助表示赞赏。我想将从 useQuery 获得的数据存储在状态变量中。

TIA。

reactjs react-query

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

使用 sizeof 运算符时的意外行为

#include <stdio.h>
#include <stdlib.h>

typedef struct StupidAssignment{
    long length;
    char* destination_ip;
    char* destination_port;
    long timestamp;
    long uid;
    char* message;
}packet;

void main(){
    int number_of_packets=10;int i;
    packet* all_packets[number_of_packets];
    for(i=0;i<number_of_packets;i+=1)all_packets[i]=malloc(sizeof packet);
}
Run Code Online (Sandbox Code Playgroud)

上面的代码片段不会编译,并出现以下错误:-

reciever.c: In function ‘main’:
reciever.c:16:64: error: expected expression before ‘packet’
  for(i=0;i<number_of_packets;i+=1)all_packets[i]=malloc(sizeof packet);
Run Code Online (Sandbox Code Playgroud)

但是,以下代码确实可以编译:-

#include <stdio.h>
#include <stdlib.h>

typedef struct StupidAssignment{
    long length;
    char* destination_ip;
    char* destination_port;
    long timestamp;
    long uid;
    char* message;
}packet;

void main(){
    int number_of_packets=10;int i;
    packet* all_packets[number_of_packets];
    for(i=0;i<number_of_packets;i+=1)all_packets[i]=malloc(sizeof(packet));
}
Run Code Online (Sandbox Code Playgroud)

唯一的区别是sizeof(packet)sizeof packet

在上一个答案中,我了解到这 …

c sizeof

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

使用Java2 aws sdk时如何配置区域?

我编写了以下控制器来生成 PreSigned S3 上传链接。

case class S3Controller(private val s3Config: S3Config, private val awsConfig: AwsConfig) {
  val URL_TIMEOUT_IN_MILLIS: Long = 60 * 5 * 1000

  def getPreSignedURLForUpload(keyName: String): String = {
    val preSigner: S3Presigner = DefaultS3Presigner.builder()
      .serviceConfiguration(s3Config.s3Configuration)
      .credentialsProvider(awsConfig.awsCredentialsProvider).build()

    val objectRequest: PutObjectRequest = PutObjectRequest.builder()
      .bucket(s3Config.bucketName)
      .key(keyName)
      .contentType("text/plain")
      .build()

    val preSignRequest: PutObjectPresignRequest = PutObjectPresignRequest.builder()
      .signatureDuration(Duration.ofMinutes(10))
      .putObjectRequest(objectRequest)
      .build()

    val preSignedRequest: PresignedPutObjectRequest = preSigner.presignPutObject(preSignRequest)


    val myURL: String = preSignedRequest.url().toString

    myURL
  }
}
Run Code Online (Sandbox Code Playgroud)

我使用的配置对象

case class S3Config (
                      bucketName: String,
                      s3Configuration: S3Configuration
                    )
Run Code Online (Sandbox Code Playgroud)
case class AwsConfig …
Run Code Online (Sandbox Code Playgroud)

java scala amazon-s3 amazon-web-services aws-sdk-java-2.0

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

为什么这些函数擦除后类型相同?

def merge[X](list1: Option[List[X]], list2: Option[List[X]]): Option[List[X]]  
def merge[X](list1: Option[List[X]], elem: Option[X]): Option[List[X]]
Run Code Online (Sandbox Code Playgroud)

编译器说这两个函数在擦除后具有相同的类型

def merge[X](list1: Option[List[X]],list2: Option[List[X]]): Option[List[X]] at line 122 and
def merge[X](list1: Option[List[X]],elem: Option[X]): Option[List[X]] at line 131
have same type after erasure: (list1: Option, list2: Option)Option
Run Code Online (Sandbox Code Playgroud)

为什么擦除后Option[List[X]]Option[X]变得相同?我怎样才能让它们与众不同?

java generics scala

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