相关疑难解决方法(0)

我是否施放了malloc的结果?

这个问题,有人建议意见,我应该不会投的结果malloc,即

int *sieve = malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

而不是:

int *sieve = (int *) malloc(sizeof(int) * length);
Run Code Online (Sandbox Code Playgroud)

为什么会这样呢?

c malloc casting

2318
推荐指数
27
解决办法
22万
查看次数

在许多malloc/free小块内存之后无法使用malloc大块内存

这是代码.

首先我尝试malloc并释放一个大块内存,然后我malloc许多小块内存,直到它耗尽内存,我释放所有这些小块.

在那之后,我尝试malloc一个大块内存.

#include <stdio.h>
#include <stdlib.h>
int main (int argc, char **argv)
{
    static const int K = 1024;
    static const int M = 1024 * K;
    static const int G = 1024 * M;

    static const int BIG_MALLOC_SIZE = 1 * G;
    static const int SMALL_MALLOC_SIZE = 3 * K;
    static const int SMALL_MALLOC_TIMES = 1 * M;

    void **small_malloc = (void **)malloc(SMALL_MALLOC_TIMES * sizeof(void *));

    void *big_malloc = malloc(BIG_MALLOC_SIZE);
    printf("big malloc first time %s\n", (big_malloc …
Run Code Online (Sandbox Code Playgroud)

c c++ windows heap fragmentation

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

MySQL非常偶然无法保存结果集

这是一个生产PHP/MySQL系统,已经运行了几个月,大多没有问题.

很偶然,就像每隔几周一次,我从MySQL查询中看到"无法保存结果集"错误.

我知道这可能是由一个大的结果集引起的,但事实并非如此.在最近的例子中,它发生在通常不超过10行的小表中(行表示活动游戏,并且在游戏结束后它们被移除 - 大量转换,但总是很小).

查询非常简单:

SELECT player_1_id, player_2_id FROM minuetServer_games 
WHERE  ( player_1_id = '1513399' OR player_2_id = '1513399' )  
AND last_action_time < SUBTIME( CURRENT_TIMESTAMP, '0 0:01:22.000' ) 
FOR UPDATE;
Run Code Online (Sandbox Code Playgroud)

这个查询的目的是为给定的user_id(它们可以是p1或p2)找到任何不太陈旧的活动游戏.如果存在,我在下一个查询中更新了他们游戏的last_action_time(当然,当未保存结果集时,不会发生更新).

我运行了CHECK TABLE,结果还可以.

虚假,偶尔"无法保存结果集"警告的原因是什么?有办法解决吗?有一个坚实的解决方案吗?

编辑:

一位评论者要求提供有关他PHP配置的更多信息.这是phpinfo()输出的直接链接:

http://cordialminuet.com/info.php

EDIT2:

这是创建查询的代码:

global $tableNamePrefix;
cm_queryDatabase( "SET AUTOCOMMIT=0" );

global $moveTimeLimit;

$query = "SELECT player_1_id, player_2_id ".
    "FROM $tableNamePrefix"."games ".
    "WHERE ( player_1_id = '$user_id' OR player_2_id = '$user_id' ) ".
    " AND last_action_time < ".
    " SUBTIME( CURRENT_TIMESTAMP, '$moveTimeLimit' ) FOR UPDATE;"; …
Run Code Online (Sandbox Code Playgroud)

php mysql

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

标签 统计

c ×2

c++ ×1

casting ×1

fragmentation ×1

heap ×1

malloc ×1

mysql ×1

php ×1

windows ×1