对于以下代码Spinet:
#include <stdio.h>
int main(void) {
int x = 12345678;
char *a = x;
printf("%d\n", x);
printf("%d\n %d\n %d\n %d\n", a[0], a[1], a[2], a[3]);
return 0;
}
GNU GCC v7.1.1的输出: 超时:受监视的命令转储核心 sh:第1行:11792分段故障超时时间为10s main
请注意以下工作:
#include <stdio.h>
int main(void) {
int x = 12345678;
char *a;
*a = x;
printf("%d\n", x);
printf("%d\n %d\n %d\n %d\n", a[0], a[1], a[2], a[3]);
return 0;
}
答案 0 :(得分:6)
这些都不正确。
在两种情况下,您都将一个整数值分配给一个指针。然后将该值视为有效的内存位置并取消引用。但这不是有效的内存位置,因此您调用undefined behavior。
在第一种情况下,UB表现为崩溃,而在第二种情况下,UB表现为正常工作。
您需要做的是将<input (keyup)="searchProducts()" id="productSearch" placeholder="search products...">
<ng-container *ngIf="infinite | async as products">
<cdk-virtual-scroll-viewport itemSize="100" (scrolledIndexChange)="nextBatch($event, (products[products.length - 1].data.productName))">
<div class="product-row" fxLayout="row wrap" fxLayout.xs="column wrap" fxFlexFill fxLayoutAlign="center center">
<div fxFlex.gt-xs="50%" fxFlex.gt-md="30%" *cdkVirtualFor="let p of products; let i = index; trackByIndex">
<mat-card class="product-tile">
<img class="product-thumbnail" src= "{{ p.data.thumbnail }}" [routerLink]="p.id">
<div class="product-brand">
{{ p.id }}
</div>
<div class="product-details">
<span id="product-name">{{ p.data.productName }}</span> <span id="product-price">{{ p.data.price }}</span>
</div>
<div class="add-to-pad-button">
<button (click)="openDialog(p.id)" mat-raised-button color="accent">Add to Pad</button>
<a href="{{ p.data.link }}" class="mat-raised-button color=accent">Click Me</a>
</div>
</mat-card>
</div>
</div>
</cdk-virtual-scroll-viewport>
</ng-container>
的地址分配给x
。然后,您可以读取组成a
的字节。
int